1

我有两个活动,Activity1 extends ListActivityActivity2。我用我自己的适配器ListActivity。我想Activity2在单击列表项之一时启动。中有一个ImageView1Activity2当我单击 中的第一项时ListActivity,我想将位于可绘制文件夹中的 FirstImage 设置ImageView1Activity2。当我单击中的第二个项目时ListActivity,我想将位于可绘制文件夹中的 SecondImage 替换为 ImageView1。因此,我需要将点击项目的位置值作为 Intent Extra 发送。我对发送位置值感到困惑。我也想用 Switch-Case 来写。有人给我解释一下吗?我绝对是初学者。谢谢

Home.java (活动1)

public class Home extends ListActivity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //setContentView(R.layout.home);
        String [] items = new String []{"Banana","Apple","Orange","Pineapple","Lime","Papaya","Mango"};
        CustomAdapter adapter = new CustomAdapter(this, items);
        setListAdapter(adapter);

    }

    @Override
    protected void onListItemClick(ListView l, View v, int position, long id) {
        // TODO Auto-generated method stub
        super.onListItemClick(l, v, position, id);
        //Toast.makeText(this, "You touched"+position, Toast.LENGTH_SHORT).show();



    }

CustomAdapter.java

public class CustomAdapter extends ArrayAdapter<String> {

    private Context context;
    private String [] objects;


    public CustomAdapter (Context context, String []objects){
        super(context,R.layout.row, objects);
        this.context=context;
        this.objects=objects;


    }
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub
        //return super.getView(position, convertView, parent);
        LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View rowView = inflater.inflate(R.layout.row, parent, false);

        TextView tv= (TextView) rowView.findViewById(R.id.textView1);
        ImageView iv= (ImageView) rowView.findViewById(R.id.imageView1);

        tv.setText(objects[position]);
        if (objects[position].startsWith("Apple")) {
            iv.setImageResource(R.drawable.apple);
        }
        else if (objects[position].startsWith("Banana")) {
            iv.setImageResource(R.drawable.banana);

        }
        else if (objects[position].startsWith("Lime")) {
            iv.setImageResource(R.drawable.lime);
        }
        else if (objects[position].startsWith("Mango")) {
            iv.setImageResource(R.drawable.mango);
        }
        else if (objects[position].startsWith("Orange")) {
            iv.setImageResource(R.drawable.orange);
        }
        else if (objects[position].startsWith("Papaya")) {
            iv.setImageResource(R.drawable.papaya);
        }
        else {
            iv.setImageResource(R.drawable.pineapple);
        }

        return rowView;
    }

}

Activity2 只有一个 ImageView

4

1 回答 1

0

您可以使用Intent. 假设您覆盖OnListItemClick并在其中开始Activtity2

 protected void onListItemClick(ListView l, View v, int position, long id) {
    Intent intent = new Intent(this, Activity2.class);
    intent.putExtra("pos", position);
    startActivity(intent)
  }

在Activity2中onCreate使用getIntent();

public void onCreate(Bundle savedInstanceState) {
  int position = getIntent().getIntExtra("pos", 0);

}
于 2012-12-12T17:48:54.167 回答