リストビューのすべてのリストアイテムを新しいページに開くようにしたいので、各リストビューアイテムは、使用できる新しい黒いページに開きます。これを実装する方法がまったくわかりません。何時間も検索したところ、私の解決策に対する答えが見つかりません。誰かがリンクを提供する代わりにこれを行う方法を表示および/または説明できれば幸いですが、どちらも役立ちます。
これまでの私のコードは次のとおりです。
<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は関係ありません。
実際、それは非常に簡単です。
これは、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)
に変更しました-名前は、新しく作成したAndroid Projectの名前です。
// * Edit *の下の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ではなく) `res/values /`フォルダー内は次のようになります
_<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>
_
このコードを過ぎてコピーすると機能します。
次のように、string.xmlの配列からリストビューを入力できます
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);
}
});
String [] menuItems = {"デフォルトC02"、 "デフォルト02"};
ListView listView = (ListView) root.findViewById(R.id.main_menu);
ArrayAdapter<String> listViewAdapter = new ArrayAdapter<String>(
getActivity()
,Android.R.layout.simple_list_item_1
,menuItems
);
listView.setAdapter(listViewAdapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener(){
public void onItemClick(AdapterView<?> l, View v, int position, long id){
Log.i("menuItems", "You clicked Item: " + id + " at position:" + position);
}
});
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);
}
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);
}
}
});