我有一个包含10个列表项的应用程序。所有的onClick项之间都具有相同的布局。我为每个项目创建了一个新类,并使用switch方法移动到每个活动。有什么方法可以使其更简单(而且没有10节课,但更少)?
mylist.add(map);
map = new HashMap<String, Object>();
map.put("name", "aa");
map.put("address", "aaa");
map.put("address3", R.drawable.im1);
mylist.add(map);// i m adding 10 items like this here
ListAdapter mSchedule = new SimpleAdapter(this, mylist, R.layout.row,
new String[] {"name", "address","address3"}, new int[] {R.id.TextView1, R.id.TextView2,R.id.imgdiadromes});
listcafe.setAdapter(mSchedule);
listcafe.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
switch( position )
{
case 0:
Intent newActivity = new Intent(diadromes.this, monte.class);
startActivity(newActivity);
break;
case 1:
Intent newActivity1 = new Intent(diadromes.this, diadromestherisos.class);
startActivity(newActivity1);
break;
//这里还有8种情况
mothe.class类和diadromestherisos.class类完全相同,我获得相同的内容视图,并且只更改文本和图像(来自.setText和.setImageResource)。希望我的问题是可以理解的!
最佳答案
如果除了文本和图像外,它们都一样,那么您实际上只需要1个Activity类即可处理所有10种情况。您可以在切换器中执行的操作是使用文本资源和可绘制资源的ID填充Bundle,并将其传递到活动中。
因此,您的开关如下所示:
switch(position){
case 0:
Intent newActivity = new Intent(diadromes.this, YourNewActivity.class);
newActivity.putExtra("TXT_RESOURCE",R.string.your_text_resource_id);
newActivity.putExtra("IMG_RESOURCE",R.drawable.your_img_resource_id);
startActivity(newActivity);
break;
case 1:
//similar to above, but populate with the different resource ids
}
然后在YourNewActivity类中,您需要阅读其他内容并使用它们来填充您的UI:
public void onCreate(Bundle savedInstanceState){
Bundle extras = getIntent().getExtras();
int textResourceId = extras.getInt("TXT_RESOURCE");
int imgResourceId = extras.getInt("IMG_RESOURCE");
}
关于android - 使我的代码更简单,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8344703/