2013-12-11 153 views
2

我在片段中做了一個listview。現在我需要爲listview項目添加一個簡單的圖標。每個項目的圖標必須相同。這將是一個簡單的箭頭(imageview)。 這可能與我所做的列表視圖?如果是的話,我該怎麼做?如何將圖標添加到片段中的列表視圖

所以這樣的格式: 這裏我的文字--space - space-->


碎片的代碼:

public class BiblioFragment extends Fragment { 

final String[] items = new String[] { "Astma en alcohol", "Astma en huisdieren", "Astma en lichaamsgewicht", 
     "Astma en ouder worden", "Astmamedicatie", "Bekende mensen met astma", "Longfunctieonderzoek", "Reizen en vakantie", 
    "Sociaal leven", "Weetjes over astma", "Enzovoort", "Enzovoort", "Enzovoort" }; 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 

    View view = inflater.inflate(R.layout.fragment_biblio, container, false); 

    ListView list = (ListView)view.findViewById(R.id.listView1); 
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, items); 
    list.setAdapter(adapter); 

    list.setOnItemClickListener(new OnItemClickListener() { 

     @Override 
     public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, 
       long arg3) { 
      // TODO Auto-generated method stub 
      Log.v("TAG", "CLICKED row number: " + arg2); 

      Intent myIntent = new Intent(getActivity(), BiblioDetail.class); 
      myIntent.putExtra("welkerij", arg2); 
      startActivity(myIntent); 

     } 

    }); 

    return view; 

    } 
    } 

我的XML對於該片段:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    android:background="#ffffff"> 

<ListView 
    android:id="@+id/listView1" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentTop="true" > 
</ListView> 

</LinearLayout> 
+0

使用自定義適配器膨脹的自定義佈局。 – Raghunandan

+0

您需要使用自定義適配器爲見[這裏] [1] [1]:http://stackoverflow.com/a/8166802/2675669 – Nambi

+0

難道就沒有別的辦法嗎?因爲這似乎很難改變。 – user2883477

回答

0

onCreateView

ListView list = (ListView)view.findViewById(R.id.listView1); 
CustomAdapter cus = new CustomAdapter(getActivity(),items); 
list.setAdapter(cus); 

使用自定義適配器

public class CustomAdapter extends BaseAdapter { 

    String items[]; 
    LayoutInflater mInflater; 

    public CustomAdapter(Context context, String[] items) { 
     mInflater = LayoutInflater.from(context); 
     this.items = items; 
    } 

    @Override 
    public int getCount() { 
     return items.length; 
    } 

    @Override 
    public Object getItem(int position) { 
     return position; 
    } 

    @Override 
    public long getItemId(int position) { 
     return position; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     ViewHolder holder; 

     if(convertView ==null) 
     { 
      convertView = mInflater.inflate(R.layout.list_item,parent,false); 
      holder = new ViewHolder(); 
      holder.tv = (TextView) convertView.findViewById(R.id.textView1); 
      holder.iv = (ImageView) convertView.findViewById(R.id.imageView1); 
      convertView.setTag(holder); 
     } 
     else 
     { 
      holder = (ViewHolder) convertView.getTag(); 
     } 
     holder.tv.setText(items[position]) 
      // use holder.iv to set whatever image you want according to the position 
     return convertView; 
    } 

    static class ViewHolder 
    { 
     ImageView iv; 
     TextView tv; 
    } 
} 

list_item.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 

    <ImageView 
     android:id="@+id/imageView1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentTop="true" 
     android:layout_marginLeft="42dp" 
     android:layout_marginTop="32dp" 
     android:src="@drawable/ic_launcher" /> 

    <TextView 
     android:id="@+id/textView1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignTop="@+id/imageView1" 
     android:layout_marginLeft="64dp" 
     android:layout_marginTop="14dp" 
     android:layout_toRightOf="@+id/imageView1" 
     android:text="TextView" /> 

</RelativeLayout> 

enter image description here

編輯:

如果你覺得這是比殺了你可以在左側使用複合的TextView與形象,右邊的文字。

在上面我已經使用list_item.xml這是一個自定義佈局。我在自定義適配器的getView中充氣佈局。我將文本設置爲textview。我已將默認啓動器圖標設置爲imageview。你可以改變它。

我也用一個ViewHolder

http://developer.android.com/training/improving-layouts/smooth-scrolling.html

還要檢查

How ListView's recycling mechanism works

+0

這種有效的工作。只有每個項目上都有'TextView'。例如,不是Astma en酒精。 – user2883477

+0

@ user2883477更改'holder.tv.setTag(items [position]);'到'holder.tv.setText(items [position]);'並接受答案 – Raghunandan

+0

已工作。謝謝!快速提問:如何在我的新帖中添加意圖等內容? – user2883477

0

創建ListAdapter

public class ListAdapter extends ArrayAdapter<Item> { 

public ListAdapter(Context context, int textViewResourceId) { 
    super(context, textViewResourceId); 
    // TODO Auto-generated constructor stub 
} 

private List<Item> items; 

public ListAdapter(Context context, int resource, List<Item> items) { 

    super(context, resource, items); 

    this.items = items; 

} 

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 

    View v = convertView; 

    if (v == null) { 

     LayoutInflater vi; 
     vi = LayoutInflater.from(getContext()); 
     v = vi.inflate(R.layout.itemlistrow, null); 

    } 

    Item p = items.get(position); 

    if (p != null) { 


     ImageView ICon = (ImageView) v.findViewById(R.id.description); 




     } 
    } 

    return v; 

} 

在你活動

ListView yourListView = (ListView) findViewById(R.id.itemListView); 

// get data from the table by the ListAdapter 
ListAdapter customAdapter = new ListAdapter(this, R.layout.itemlistrow, List<yourItem>); 

yourListView .setAdapter(customAdapter); 
+0

我可以在我的片段中實現這個嗎? – user2883477

+0

是的,你可以實現它在片段 – Nambi

+0

這實際上似乎有點矯枉過正。我已經運行了一切,只是想在每一行中添加相同的圖標。 Can not I just: ArrayAdapter adapter = new ArrayAdapter (getActivity(),android.R.layout.simple_list_item_1,items); 將Imageview放入simple_list_item_1中?必須有一個更簡單的解決方案.. – user2883477

相關問題