2012-11-08 8 views
8

リストビュー内のすべてのリストアイテムを新しいページにしたいので、各リストビューアイテムは私が使うことができる新しい黒いページ上に開きます。私はこれをどのように実装するのか分かりません。私は何時間も捜し求めており、私の解決策への答えは見つけられません。誰かがリンクを提供する代わりにこれを行う方法を説明したり、説明したりすることができれば大いに感謝しますが、いずれかが役に立ちます。Android - クリック可能なリストビューの作成方法

<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であるである:

はここで、これまでに私のコードです。

ここから私のリストの各項目をクリック可能にして、新しいページに開くことができますか?

ありがとうございます!

編集:

ログキャストはもはや関係しません。

答えて

29

それは非常に簡単です:

これは、リストビューを使用しての活動である、それは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> 

をあなたの `の解像度/値の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> 

はここで、これはどのように見えるかの例です。

+0

私は申し訳ありませんが、私はこれに新たなんです。これをstring.xmlまたはactivity_main.xmlに配置しますか?この中の何かを自分の情報で置き換えるのですか? –

+0

私は私の答えを編集しました。あなたが正しい軌道に乗ることを願って:) – Delpes

+0

あなたが言ったように、それは私にエラーを与えますが、私はactivity_listitem.xmlとListItemDetail.javaを追加しました。なぜ私はアプリのFCが、エラーはありません。 –

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); 
} 
0

あなたはこの

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)); 

様およびリストビュー項目をクリックするとstring.xmlをして、配列からリストビューを移入することができますが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); 
    } 
}); 
0

ListViewコントロールは非常にシンプルで簡単なmethod.justの使用であります=(リストビュー)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); 
         } 
        } 
    }); 
    
関連する問題