0

ListView の各リスト項目をクリックできるように設計し、どのリスト項目をクリックするかをトリガーします。しかし、それはできません。コードで setOnItemClickListener() と setOnItemSelectedListener() の 2 つのメソッドを試しました。この記事に関するいくつかの参照をグーグルで検索しましたが、それでも機能しません(クリック可能)。
以下のコードを投稿したいと思います。コードはリスト項目を表示でき、Log.d(" mListView01.getCount()="," "+vc);の行の Log.d コンテンツを確認できます。LogCatでよく。しかし、リスト項目をクリックしても反応がありません。よろしければ、どこが間違っていたのか教えていただけませんか。ありがとうございます。

アクティビティ ウィジェットを使用して listView を作成するコード:

......
setContentView(R.layout.main_open);
    TextView itemText = (TextView) findViewById(R.id.itemText);
    TextView codeText = (TextView) findViewById(R.id.codeText);
    itemText.setText(selectedItem);
    codeText.setText(selectedCode);
    ListView mListView01 = (ListView)findViewById(R.id.main_open_listview1);
    String[] keys = new String[] {"title","title_image", "content",
            "title1","title1_image","content1","title2","title2_image","content2"};
    int[] resValues =  new int[] { R.id.title, R.id.title_image, R.id.content,
            R.id.title1, R.id.title1_image, R.id.content1,R.id.title2, R.id.title2_image, R.id.content2};
    openDocAdapter opendoc = new openDocAdapter(this,localdcoumentlist, R.layout.main_open_content, keys, resValues );
    mListView01.setSelected(true);
    mListView01.setClickable(true);
    mListView01.setAdapter(opendoc);       

    int vc = mListView01.getCount();
    Log.d(" mListView01.getCount()="," "+vc);

    mListView01.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {

            @Override
            public void onItemSelected(AdapterView<?> arg0, View arg1,
                    int arg2, long arg3) {
                // TODO Auto-generated method stub
                Log.d("Selected From setOnItemSelectedListener, arg2=", " "+ arg2);
            }

            @Override
            public void onNothingSelected(AdapterView<?> arg0) {
                // TODO Auto-generated method stub

            }
        });


    mListView01.setOnItemClickListener(new AdapterView.OnItemClickListener()
    {
            @Override
            public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                    long arg3) {
                // TODO Auto-generated method stub
                selectedViewPos = arg2;
                Log.d("TitlesSelectionDialog(),selectedViewPos= "," "+ selectedViewPos);
                Toast.makeText(getApplicationContext(), "selectedViewPos= "+ selectedViewPos, Toast.LENGTH_LONG).show();

            }
        });
......

openDocAdapter のコード:

   private class openDocAdapter extends SimpleAdapter
    {
      private Context _con;
      private List _List;
      private int _listviewId;
      private String[] _keys;
      private int[] _resValues;


      public openDocAdapter(Context context, ArrayList<HashMap<String,Object>> List , int listviewId, String[] keys, int[] resValues ) 
      {
        super(context, List, listviewId, keys, resValues);
        _con =context;
        _List = List;
        _listviewId = listviewId;
        _keys = keys;
        _resValues = resValues;
      }

      @Override
      public View getView(int position, View convertView, ViewGroup parent)
      {
          View v = convertView;
          if (v == null) {
              LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
              v = vi.inflate(R.layout.main_open_content, null);
          }

          TextView title = (TextView) v.findViewById(R.id.title);
          (...Similiar codes define  textView, imageViewsd.)                            

          return v;
      }


      @Override
      public int getCount()
      {
        // TODO Auto-generated method stub
        return super.getCount();
      }
      @Override
      public Object getItem(int position)
      {
        // TODO Auto-generated method stub
        return super.getItem(position);
      }
      @Override
      public long getItemId(int position)
      {
        // TODO Auto-generated method stub
        return super.getItemId(position);
      }
    }  

Edit1:ここで記事を見つけました。レイアウトのフォーカス設定については、クリック可能な作業が発生するか、または機能しません。だから、私はの行を削除します(ここではコーディングしていません)レイアウトのxmlファイルに。次に、オレンジ色のフォーカス変更でリスト リストをスクロールしながら setOnItemSelectedListener() メソッドを実行します。しかし、それはまだ私の期待に応えていません。

4

1 に答える 1

3

問題解決!数回グーグル/検索してtry_erorした後。また、面白かったらシェアしたいと思います。

この問題の主な原因は次のとおりです。row.xml (各リストビュー行のコンテンツを含む) の基本レイアウトとしてScrollViewを使用しました。次に、 代わりにLinearLayout(Vertial)を使用しました。setOnItemClickedListener() メソッドが正常に動作するようになりました。ListView をクリックできない原因となるこれに関する考えはありません。知ってる人いたら教えてください

于 2012-06-01T13:04:04.840 に答える