14

リストビュー内のすべてのリスト項目を新しいページで開くようにしたいので、各リストビュー項目が新しい黒いページで開き、使用できます。これを実装する方法がまったくわかりません。何時間も検索しましたが、解決策に対する答えが見つかりません。リンクを提供する代わりに、誰かがこれを行う方法を示したり説明したりしていただければ幸いですが、どちらも役に立ちます。

これまでの私のコードは次のとおりです。

  <string-array name="sections">
    <item >Pro Constructive</item>
    <item >Con Constructive</item>
    <item >1st Speaker Cross</item>
    <item >Pro Rebbutal</item>
    <item >Con Rebuttal</item>
    <item >2nd Speaker Cross</item>
    <item >Pro Summary</item>
    <item >Con Summary</item>
    <item >Grand Cross</item>
    <item >Pro Final Focus</item>
    <item >Con Final Focus</item>
</string-array>

これは私のstring.xmlにあります

    <ListView
    android:id="@+id/listView1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:entries="@array/sections" >
</ListView>

これは私の activity_main.xml にあります。

リスト内の各項目をクリックして新しいページを開くことができるようにするには、ここからどこに行けばよいでしょうか?

前もって感謝します!

編集:

Logcat はもはや関係ありません。

4

5 に答える 5

34

実際、それは非常に簡単です。

これはListViewを使用したアクティビティであり、OnItemClickListenerを実装します。

public class MainActivity extends Activity implements OnItemClickListener {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.activity_main);

        //* *EDIT* * 
        ListView listview = (ListView) findViewById(R.id.listView1);
        listview.setOnItemClickListener(this);
    }

    public void onItemClick(AdapterView<?> l, View v, int position, long id) {
        Log.i("HelloListView", "You clicked Item: " + id + " at position:" + position);
            // Then you start a new Activity via Intent
            Intent intent = new Intent();
            intent.setClass(this, ListItemDetail.class);
            intent.putExtra("position", position);
            // Or / And
            intent.putExtra("id", id);
            startActivity(intent);
    }

編集

上記のコードは、MainActivity.javaに配置されます。クラスの名前をにMainActivity、contentViewをに変更しましたsetContentView(R.layout.activity_main)-名前は、Eclipseで新しく作成されたAndroidプロジェクトの名前です。
//*編集*の下の2つの新しい行も参照してください-これらはリスト内のアイテムのクリックのリスナーを設定します。

activity_main.xmlは次のようになります。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content">

    <ListView
        android:id="@+id/listView1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:entries="@array/sections" >
    </ListView>
</RelativeLayout>

`res / values /`フォルダー内のarray.xml (string.xmlではない)は次のようになります

<resources>
    <string-array name="sections">
        <item >Pro Constructive</item>
        <item >Con Constructive</item>
        <item >1st Speaker Cross</item>
        <item >Pro Rebbutal</item>
        <item >Con Rebuttal</item>
        <item >2nd Speaker Cross</item>
        <item >Pro Summary</item>
        <item >Con Summary</item>
        <item >Grand Cross</item>
        <item >Pro Final Focus</item>
        <item >Con Final Focus</item>
    </string-array>
</resources>

注意:このコードをコピーして貼り付けると、機能するはずです。ただし、まだ作成していないため、アイテムをクリックするとエラーが発生しますListItemDetail.class

これがどのように見えるかの例を次に示します。

ListItemDetail.java:

public class ListItemDetail extends Activity {

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_listitem);

    Intent intent = getIntent();
    int position = intent.getIntExtra("position", 0);

    // Here we turn your string.xml in an array
    String[] myKeys = getResources().getStringArray(R.array.sections);

    TextView myTextView = (TextView) findViewById(R.id.my_textview);
    myTextView.setText(myKeys[position]);


    }

}

そしてそのactivity_listitem.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/my_textview"/>

</LinearLayout>

このコードを超えてコピーすると、機能します。

于 2012-11-08T01:45:08.817 に答える
1

次のように、string.xml の配列から listview を設定できます

String[] myKeys = getResources().getStringArray(R.array.sections);
ListView mListView = (ListView)findViewById(R.id.listView1);
mListView.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, myKeys));  

リストビュー項目をクリックするのは非常にシンプルで簡単な方法です.setOnItemClickListenerを使用するだけです

mListView.setOnItemClickListener(new OnItemClickListener() 
{
    public void onItemClick(AdapterView<?> arg0,View arg1, int position, long arg3) 
    {

        Intent n = new Intent(getApplicationContext(), yourclass.class);
        n.putExtra("position", position);
        startActivity(n);
    }
});
于 2012-11-08T02:52:05.803 に答える
0

listView= (ListView) findViewById(R.id.listview);

  • リスト項目

    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
    
            if(position==0){
                Intent i=new Intent(MainActivity.this,Main3Activity.class);
                startActivity(i);
            }
        }
    });
    
于 2016-12-02T06:14:10.647 に答える
0

関数を使用してonListItemClick、次のアクティビティをロードし、データを渡すインテントを設定します。

public void onListItemClick(ListView parent, View view, int position, long id)
{
    Intent intent = new Intent(this, AnotherActivity.class);
    intent.putExtra("position", position);
    startActivity(intent);
}
于 2012-11-08T01:44:23.427 に答える