0

カスタム arrayadapter を実装してリスト アクティビティにアイテムを提供し、その選択したアイテムを新しいアクティビティに表示する方法について頭を悩ませようとしています。

たとえば、RESTful Web サービスからドキュメントのリストを取得しており、これらをリスト アクティビティに表示したいと考えています。API への最初の呼び出しでは、title と id の 2 つのフィールドを持つドキュメントの JSON が返されます。UI のドキュメントのタイトルだけを listactivity に入力したいと思います。アイテムをクリックすると、理想的には通常のアクティビティが開き、別の API 呼び出しが行われ、選択したドキュメント全体が JSON 形式で返され、新しいアクティビティの UI に表示されます。

グーグルで調べた後、必要な手順は次のとおりだと思います。

  1. リスト項目のタイトルと ID のみを含む RecordListItem クラスを作成します。
  2. RecordListItem 型の arrayadapter を作成します。
  3. その arrayadapter をリスト アクティビティにアタッチします。
  4. ???

選択したアイテムの ID を通常のアクティビティに渡す適切な方法について混乱しているため、その特定のレコードを取得する API 呼び出しを行うことができます。それらの手順は理にかなっていますか?

私はウェブ開発に慣れているので、これは別の考え方であり、行き詰まっています。誰かが正しい手順を説明したり、新しいアクティビティで選択した項目を表示するチュートリアルを教えてくれたりできますか?

4

2 に答える 2

2

ArrayAdapter コンストラクターで、タイトル/ID を含む配列を渡します

public Docs_Array(Context context, Object[] docs) {
   super(context, R.layout.row, docs);
   this.context = context;
   this.docs = docs;
}

getView メソッドでは、各行のレイアウトと情報を設定します。「位置」引数は、必要なドキュメントを取得する方法です。title+id のように複数のものが必要な場合は、Object[i] インスタンスを別の配列にキャストできます。

public View getView(int position, View convertView, ViewGroup parent) {
   LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
   View rowView = inflater.inflate(R.layout.row, parent, false);
   TextView textView = (TextView)rowView.findViewById(R.id.row_title);
   textView.setText(((String[])docs[position])[0]); // 0 for title.
}

各行ビューに onClickListener を追加すると、 ((String[])docs[position])[1] はクリックされたドキュメント タイトルの ID を取得します。

于 2013-03-07T03:12:15.823 に答える
1

コードを見なくても、正しい方向に進んでいるように聞こえます。HashMapを使用しtitleてid を保存しkeyid as the. Then, when you select your item you can look up theid using thetitle and send it to your nextActivity`を使用することをお勧めします。それはおそらく私がそれを処理する方法です。

チュートリアルに関しては、ドキュメントがまだない場合はドキュメントから始めます。次に、特定の問題がある場合は、人々が SO で抱えていた同様の問題や、Google でさらに多くの問題を見つけることができると確信しています。お役に立てれば

于 2013-03-07T03:02:41.647 に答える