1

私には 2 つの活動がActivity1 extends ListActivityありActivity2ます。自作のアダプターを使用しましたListActivityActivity2リスト項目をクリックすると起動したい。に がありImageView1ますActivity2。の最初の項目をクリックするとListActivity、drawable フォルダーにある FirstImage を of に設定したいと思いImageView1ますActivity2。の 2 番目の項目をクリックするとListActivity、drawable フォルダーにある 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 が 1 つしかありません

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 に答える