如何通过适配器在Listview中添加图标图像?

时间:2014-09-20 04:00:49

标签: android android-listview icons

我有一个示例代码,我为自定义导航抽屉。我不知道如何在列表视图中的每个项目位置添加图标。该位置表示将当前页面链接到另一个页面的意图。我还将字符串项目放在名为data的数组中,以便我可以通过适配器添加它。列表视图是navList请帮忙!

public class HomePatient extends Activity {
final String[] data ={"Home","Health Progress","Diet","Workout","Medications","Help","Settings","Logout"};

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(R.layout.homepatient);

final DrawerLayout drawer = (DrawerLayout)findViewById(R.id.drawer_layout);
    final ListView navList = (ListView) findViewById(R.id.left_drawer);


ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, data);
    navList.setAdapter(adapter);
    ArrayAdapter<String> adaptertext = new ArrayAdapter<String>(HomePatient.this, R.layout.textholder, data);
    navList.setAdapter(adaptertext);

        navList.setOnItemClickListener(new OnItemClickListener() {
            public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
                String text = data[position];
                if(position==1)
                {
                    Intent i = new Intent(HomePatient.this, HealthProgress.class);
                    i.putExtra("TEXT", text);
                    startActivity(i);
                    //onDestroy();
                    finish();
                }
                if(position==2)
                {
                    Intent i = new Intent(HomePatient.this, DietPatient.class);
                    i.putExtra("TEXT", text);
                    startActivity(i);
                    //onDestroy();
                    finish();
                }
                if(position==3)
                {
                    //Intent i = new Intent(HomePatient.this, WorkoutPatient.class);
                    //i.putExtra("TEXT", text);
                   // startActivity(i);
                    //onDestroy();
                    //finish();
                }
                if(position==4)
                {
                    Intent i = new Intent(HomePatient.this, TreatmentPatient.class);
                    i.putExtra("TEXT", text);
                    startActivity(i);
                   // onDestroy();
                    finish();
                }
                if(position==7)
                {
                    Intent i = new Intent(HomePatient.this, PatientLogin.class);
                    i.putExtra("TEXT", text);
                    startActivity(i);
                    //onDestroy();
                    finish();
                }

            }
});

4 个答案:

答案 0 :(得分:3)

  

我不知道如何在每个项目位置添加图标   列表视图

因为您使用的默认android.R.layout.simple_list_item_1布局只包含一个TextView。要在ListView行中显示图像和文本,您需要创建自定义布局,然后将其传递给ListView适配器。请参阅以下示例以创建自定义ArrayAdapter

Customizing Android ListView Items with Custom ArrayAdapter

答案 1 :(得分:2)

您已使用baseadapter并使用自定义适配器和自定义列表行项目

看看

http://www.pcsalt.com/android/listview-using-baseadapter-android/

答案 2 :(得分:2)

将自定义Listview与BaseAdapter一起使用。 这是link.

答案 3 :(得分:1)

/* here is my activity*/

public class abc extends Activity{

  public String[] items{
    "A","B"
   };

 public void oncreate(***)
 {
  .........
  .......
  Listview lv =(Listview)findviewbyid(R.id.listview); // reference to list view 

  Myadapter myadapter = new     Myadapter(this,android.r.layout.simple_list_item_1,android.r.id.text,items); 

lv.setadapter(myadapter); // i am setting my list view to this adapter
}


}


// here goes my adapter class



public class Myadapter extends Arrayadapter<String>

{
  Context context;
  String[] objs;

  public Myadapter(context context , resouce , txtresid , String[] objs)
 {
   super(context , resouce , txtresid , objs);
   this.context = context;
   this.objs= objs;
 }
 @Override
    public View getView(int position, View convertView, ViewGroup parent) {
         // now i will inflate my xml by returning view
         // create an xml file that contais imageview and text or whatever you want 
         // i have named my xml file as simple_list.xml
            Layoutinflater inflater = (Layoutinflater)             context.getsystemservice(context.LAYOUT_INFLATER_SERVICE);

     View view = inflater.inflater(R.layout.simple_list.xml,parent,false);//check out layout inflater class and its method 
      Imageview iv = (Imageview)view.findviewbyid(R.id.imgview);
      Textview tv  = (TextView) view.findviewbyid(R.id.txtview);


      tv.setText(objs[position]);

      if(objs[position].equals("A"))
      {
        iv.setimageresource(R.drawable.someimage);
      }
      else if(objs[position].equals("B"))
      {
         iv.setimageresource(R.drwable.nextimage);
      }    


        return view;
    }






}
相关问题