如何通过适配器在Listview中添加图标图像?
问题描述:
我有一个示例代码,我为我的自定义导航抽屉。我不知道如何将图标添加到列表视图中的每个项目位置。该位置表示一个意图,以便将当前页面链接到另一个页面。我还将字符串项目放入名为data的数组中,以便我可以通过适配器添加它。 listview是navList请帮忙!如何通过适配器在Listview中添加图标图像?
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();
}
}
});
答
我不知道,因为你使用的是默认android.R.layout.simple_list_item_1布局只包含一个
TextView
在 列表视图
我怎样才能添加图标,每一个项目的位置。要显示ListView
行中的图像和文本,您需要创建自定义布局,然后将其传递给ListView适配器。看下面的例子来创建自定义ArrayAdapter
答
你必须使用baseadapter对于这一点,使用自定义适配器和自定义列表行项目
看看
http://www.pcsalt.com/android/listview-using-baseadapter-android/
答
/* 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;
}
}
您使用自定义列表视图?如果没有你可以实现它与自定义列表检查[this](http://www.androidhive.info/2014/07/android-custom-listview-with-image-and-text-using-volley/) – 2014-09-20 04:27:01