0

私はリストビューを持っています。すべてのボタンが異なるアクティビティを開くようにしたいです。

リストビューには多くのオプションがあり、各オプションは別のアクティビティにつながります。

これを行う方法がわかりませんでした。

ありがとう。

ジャワ

public class AndroidListViewActivity extends ListActivity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        String[] adobe_products = getResources().getStringArray(
                R.array.adobe_products);

        this.setListAdapter(new ArrayAdapter<String>(this, R.layout.list_item,
                R.id.label, adobe_products));

        ListView lv = getListView();

        lv.setOnItemClickListener(new OnItemClickListener() {
            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) {

                String product = ((TextView) view).getText().toString();

                Intent i = new Intent(getApplicationContext(), mavo.class);

                i.putExtra("product", product);
                startActivity(i);

            }  });}}

listen_item XML

<?xml version="1.0" encoding="utf-8"?>
<!--  Single List Item Design -->

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/label"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:padding="10dip"
        android:textSize="16dip"
        android:textStyle="bold" >

</TextView>
4

2 に答える 2

1

コードの何が問題だったのかをあなたが言わなかったので、私は推測しています。おそらく、ArrayAdapter は、各リスト項目のレイアウトに単なる TextView 以外のものを使用しているため、TextView をそのままの方法で単純に引き出すことはできません。

製品文字列を取得するには、代わりにこれを試してください。 String product = adobe_products[position];

String[] adobe_productsファイナルにする必要があります。

編集:あなたが求めていると思うことに基づいて、これを試してください:

lv.setOnItemClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View view,
                int position, long id) {

            Class<? extends Activity> activityToStart = null;

            switch (position){
            case 0:
                activityToStart = MyProduct0Activity.class;
                break;
            case 1:
                activityToStart = MyProduct1Activity.class;
                break;
            //etc.
            }

            Intent i = new Intent(getApplicationContext(), activityToStart);
            startActivity(i);

        }  });
于 2013-08-20T16:07:47.753 に答える
0

Okie ..だから、あなたのコメントから私が理解していることは次のとおりです。リストビューがあり、リストビューの各アイテムはテキストビューです。各アイテムをクリックすると、別の画面/アクティビティに移動する必要があります。

もしそうなら...

このコードを置き換えます

 public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) {

                String product = ((TextView) view).getText().toString();

                Intent i = new Intent(getApplicationContext(), mavo.class);

                i.putExtra("product", product);
                startActivity(i);

            }

これとともに..

     public void onItemClick(AdapterView<?> parent, View view,
                        int position, long id) {

                    Switch(position){
case 0:
String product = ((TextView) view).getText().toString();
Intent i = new Intent(AndroidListViewActivity.this, FIRST_SCREEN.class);
i.putExtra("product", product);
startActivity(i);
break;
case 1:
String product = ((TextView) view).getText().toString();
Intent i = new Intent(AndroidListViewActivity.this, SECOND_SCREEN.class);
i.putExtra("product", product);
startActivity(i);
break;

// Repeat the same for all screens
...
...
...

}


                }

注 ::: このコードはテストしていません。これは、その方法についてのアイデアを提供するためのものです。

お役に立てれば..

于 2013-09-04T10:10:49.360 に答える