現在リストを必要とするプロジェクトを行っています。リストの特定の項目をクリックすると、別のリスト アクティビティが表示されます。あるリストビュー アクティビティから別のリストビュー アクティビティに移動する方法に関する解決策はありますか。現在、ListView のリファレンスとしてhttp://www.androidhive.info/2012/02/android-custom-listview-with-image-and-text/を使用しています。
2 に答える
0
api はExpandableListViewを提供します。あなたの要件はそれに非常に近いようです
于 2012-09-23T11:01:42.710 に答える
0
1つの解決策は次のとおりです。
2 番目の ListView アクティビティを作成し、通常のインテントを使用して 2 番目の ListViewActivity を開く OnItemClickListener で最初の ListActivity を実装します。
listView = (ListView) findViewById(R.id.mylistview);
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View v, int position,
long arg3) {
Intent intent = new Intent(FirstListActivity.this, SecondListActivity.class);
Bundle bundle = new Bundle();
bundle.putString("pos", position);
intent.putExtras(bundle);
startActivity(intent);
}
});
アップデート:
簡単なサンプル リスト アプリケーションを作成しました。インスペクションに使用できます。2 番目のリスト アクティビティを開くコードが含まれていますが、コメント アウトされています。この例を実行すると、さらに近づいています。次に、インテント コードをコメント アウトしてみてください。
package com.adpog.listviewexample;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.Toast;
import android.app.Activity;
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Find the ListView resource.
ListView mainListView = (ListView) findViewById( R.id.my_list );
// Set the Adapter as the ListView's adapter.
mainListView.setAdapter( new BaseAdapter(){
// Create and populate a List of planet names.
String[] planets = new String[] {"Mercury", "Venus", "Earth", "Mars", "Jupiter", "Saturn", "Uranus", "Neptune" };
@Override
public int getCount() {
return planets.length;
}
@Override
public Object getItem(int pos) {
return planets[pos-1];
}
@Override
public long getItemId(int pos) {
return 0;
}
@Override
public View getView(int pos, View view, ViewGroup viewgroup) {
if(view == null){
/**
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_launcher"
/>
<TextView
android:id="@+id/item_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Text not set" />
</LinearLayout>
*/
view = View.inflate(getApplicationContext(), R.layout.row, null);
}
return view;
}
});
mainListView.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView< ? > arg0, View arg1, int arg2, long arg3) {
Log.d("ListView", "Pos: " + arg2 + ", long : "+arg3);
Toast.makeText(getApplicationContext(), "Test " + arg2, Toast.LENGTH_SHORT).show();
/* Alternative way; opens a new Activity
Intent intent = new Intent(this, SecondListViewActivity.class);
intent.putExtra("position", pos);
startActivity(intent);
*/
}
@Override
public void onNothingSelected(AdapterView< ? > arg0) {
}
});
/**
* Implement an action for each item click.
*/
mainListView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView< ? > arg0, View arg1, int arg2, long arg3) {
Log.d("ListView", "OnClickPos: " + arg2 + ", long : "+arg3);
Toast.makeText(getApplicationContext(), "Test " + arg2, Toast.LENGTH_SHORT).show();
}
});
}
}
于 2012-09-23T11:12:35.877 に答える