0

私のAndroidアプリには、jsonのダウンロードと解析からのデータを表示しているリストビューがあります。このリストビューでは、OnItemClickListenerは最初の5つまたは6つのアイテムの後で応答していません。誰かが私の問題を教えてもらえますか?

これがリストビューの私のコードです:

mListView.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                long arg3) {
            // TODO Auto-generated method stub
            try {                   
                String s = BookJsonParser.ids[arg2];
                String bookDetailUrl =  url + s;
                DownloadBookDetail downloadTaskbookDetail = new DownloadBookDetail();
                downloadTaskbookDetail.execute(bookDetailUrl);

            } catch (Exception e) {
                System.out.println(e.printStackTrace(););
            }
        }

    });

DownloadBookDetailは、Json StringがdoInBackGroundメソッドでダウンロードし、onPostExecuteメソッドで別のasyncTaskを開いているasyncTaskです。2番目のasyncTaskでは、doInBackgroundメソッドでjsonを解析し、onPostExecuteメソッドでアダプターを使用してリストビューをロードしています。2番目のasyncTaskのコード:

    /** AsyncTask to parse json data and load ListView */
private class ListViewLoaderTask extends
        AsyncTask<String, Void, SimpleAdapter> {

    JSONObject jObject;

    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        pDialog = new ProgressDialog(BookActivity.this);
        pDialog.setMessage("Listing New Books...");
        pDialog.setIndeterminate(false);
        pDialog.setCancelable(false);
        pDialog.show();
    }

    // Doing the parsing of xml data in a non-ui thread
    @Override
    protected SimpleAdapter doInBackground(String... strJson) {
        try {
            jObject = new JSONObject(strJson[0]);
            BookJsonParser countryJsonParser = new BookJsonParser();
            countryJsonParser.parse(jObject);
        } catch (Exception e) {
            Log.d("JSON Exception1", e.toString());
        }

        // Instantiating json parser class
        BookJsonParser countryJsonParser = new BookJsonParser();

        // A list object to store the parsed countries list
        List<HashMap<String, Object>> countries = null;

        try {
            // Getting the parsed data as a List construct
            countries = countryJsonParser.parse(jObject);
            System.out.println(countries.toString());
        } catch (Exception e) {
            Log.d("Exception", e.toString());
        }

        // Keys used in Hashmap
        String[] from = { "country", "flag", "author" };

        // Ids of views in listview_layout
        int[] to = { R.id.tv_bookName, R.id.list_image, R.id.tv_bookAuthor };

        // /////////
        /*
         * for (int i = 0; i < BookJsonParser.ids.length; i++) {
         * System.out.println(BookJsonParser.ids[i]); }
         */

        // Instantiating an adapter to store each items
        // R.layout.listview_layout defines the layout of each item
        SimpleAdapter adapter = new SimpleAdapter(getBaseContext(),
                countries, R.layout.item_lv_layout, from, to);

        return adapter;
    }
4

2 に答える 2

4

ビューがリストビューにフォーカスされていないようです。リストの行をクリックしたときのビューの問題であり、常に他のビューのキャプチャイベントです。以下のプロパティを行ファイルのメインレイアウトに適用し、それが機能するかどうかを教えてください。

android:descendantFocusability="blocksDescendants"

于 2013-02-20T05:09:28.473 に答える
0

ロビンフッド、答えてくれてありがとう、それは私を助けてくれます。

私の場合、ボタン付きのContactsCursorAdapterのカスタムビューを使用しました。ButtonがInvisibleまたはGoneの場合、すべて正常に機能しますが、Visibleとして設定すると、ListViewのsetOnItemClickListenerが機能しませんでした。

于 2013-07-08T08:24:22.977 に答える