2 つの Android アクティビティがあります。
1 つ目は、ListView に本のタイトルを表示することです。データは Web サービスから取得され、書籍 ID を読み取ります
アイテム (その値は本のタイトル) をクリックすると、2 番目のアクティビティに移動して、他の Web サービスからの本の詳細を表示しますが、これは本の ID によって異なります。
最初のアクティビティで ListView にタイトルを表示させ、ID を渡すにはどうすればよいですか?
2 つの Android アクティビティがあります。
1 つ目は、ListView に本のタイトルを表示することです。データは Web サービスから取得され、書籍 ID を読み取ります
アイテム (その値は本のタイトル) をクリックすると、2 番目のアクティビティに移動して、他の Web サービスからの本の詳細を表示しますが、これは本の ID によって異なります。
最初のアクティビティで ListView にタイトルを表示させ、ID を渡すにはどうすればよいですか?
このようなアダプターをリストビューで使用し、リストビューに onItemClickListener を実装します。onItemClickListener から位置を取得し、bookId[position] に似た本 ID を持つ特定の本の詳細を表示する次のアクティビティに bookId[position] を送信します。
public class MySimpleAdapter extends BaseAdapter
{
private final Activity context;
private final String[] bookTitle;
private final Integer[] bookId;
public MySimpleAdapter(Activity context, String[] title,Integer[] id)
{
super();
this.context = context;
this.bookTitle = title;
this.bookId = id;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return bookTitle.length;
}
@Override
public Object getItem(int arg0) {
// TODO Auto-generated method stub
return null;
}
@Override
public long getItemId(int arg0) {
// TODO Auto-generated method stub
return 0;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent)
{
//inflating
LayoutInflater inflater = context.getLayoutInflater();
convertView = inflater.inflate(R.layout.list_inflater,null);
//binding
final TextView tvTitle=(TextView)convertView.findViewById(R.id.tvTitle);
tvTitle.setText(bookTitle[position]);
return convertView;
}
「自家製」アイテムでリストビューを作成し、ID をコンストラクターに渡し、このアイテムの変数を渡します。例:
public class TextBook extends LinearLayout {
private String id;
public TextBook(Context context, AttributeSet attrs, String id) {
super(context, attrs);
this.id = id;
LayoutInflater inflater = (LayoutInflater) getContext()
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
inflater.inflate(R.layout.yourlayout, this);
}
}
またはそのようなもの。テキストビューやレイアウトで使用するものを取得し、セッター (そしてもちろんアダプター) を配置することを忘れないでください。