1

私はAndroidプログラミングにかなり慣れていないため、自分で多くのことを解決できません。ここ数時間、リスト ビューでのユーザーのクリックに基づいて何らかのアクティビティを実行するためのコードを書こうとしていました。基本的に、私は以下を行う必要があります:

1) BOOK ID、BOOK NAME、および WRITER 情報を含むリストビューを既に正常に生成しています 2) 各行をクリックすると、その行の BOOK ID を読み取り、メイン ページに戻って事前定義された関数 x を実行しますメインページの (BOOK_ID)。

私はたくさん検索しようとしましたが、初心者であるため、すべてが私をより混乱させています. どんな助けでも大歓迎です。

リストビューの単一ブロック:

    <TextView
        android:id="@+id/bookname"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Book Title" />
    <TextView
        android:id="@+id/bookid"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Book ID" />

    <TextView
        android:id="@+id/writer"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Writer" />
</RelativeLayout>

Java クラス:

mylibmandbhandler db = new mylibmandbhandler(this);
        List<mylibman> allfld = db.getAllRecord();
        ArrayList<HashMap<String, String>> allbookList = new ArrayList<HashMap<String, String>>();
        for (mylibman cn : allfld) {
            HashMap<String, String> map = new HashMap<String, String>();
            map.put(LIST_KEY_ID, Integer.toString(cn.getBookid()));
            map.put(LIST_KEY_NAME, cn.getBookname());
            map.put(LIST_KEY_WRITER, cn.getWriter());
            allbookList.add(map);
        }
        list=(ListView)findViewById(R.id.list);
        adapter=new MylibmanList(this, allbookList); //calling adapter class
        list.setAdapter(adapter);
// UPTO THIS POINT CODE IS WORKING FINE

        list.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
// NEED TO GET THE BOOKID OF THE ROW UPON CLICKING, GO BACK TO MAIN ACTIVITY, AND CALL A FUNCTION X()
            }
        });
4

3 に答える 3

1

Adapter クラスで、次のように getItem(int position) を実装します...

@Override
public Object getItem(int position) {
  return allBookList.get(position);
}

このように OnItemClickListener を実装します。

 list.setOnItemClickListener(new OnItemClickListener() {
     @Override
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        HashMap<String, String> hashMap = (HashMap<String, String>) parent.getItemAtPosition(position);
        String string = hashMap.get(LIST_KEY_ID);
        int id = Integer.valueOf(string);
        Intent intent = new Intent();
        intent.putExtra("bookId",id);
        setResult(RESULT_OK,intent);
        finish();
     }
 });

および結果のアクティビティを開始する方法については、2Deeのリンクを参照してください。

于 2013-11-09T12:43:24.980 に答える