2012-06-01 4 views
0

Я хочу, чтобы каждый элемент списка в ListView можно было щелкнуть, и триггер, из которого следует щелкнуть элемент списка. Но это невозможно. Я попробовал два метода: setOnItemClickListener() и setOnItemSelectedListener() в моем коде. У меня было несколько ссылок на статью, но она по-прежнему не может работать (кликабельна).
Я бы разместил код ниже: Код может отображать элементы списка, и я могу увидеть содержимое Log.d для строки Log.d ("mListView01.getCount() =", "" + vc); на LogCat хорошо. Но, если я нажал на элемент списка, ответа не будет. если вы не возражаете, не могли бы вы указать мне, где я был неправ, спасибо!Android-элемент списка ListView не доступен для скачивания

Код для создания ListView с помощью Activity Widget:

...... 
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: Я нашел article here Об настройки Фокус на макете будет вызывать кликабельны работать или не работать. Таким образом, я удаляю строки (я не читаю здесь) в XML-макете макета. Затем выполняется метод setOnItemSelectedListener() при прокрутке списка списка с оранжевым изменением фокуса. Но это все еще не соответствует моему искушению.

ответ

3

Пролм Решено! После пары дома googling/search и try_eror. И я хотел бы поделиться им, если вы интересны.

Основная причина проблемы: Я использовал ScrollView в качестве основного макета для row.xml (содержащего содержимое для каждой строки списка). Затем я использовал вместо него LinearLayout (Vertial). Метод setOnItemClickedListener() теперь работает отлично. Я не имею ни малейшего представления об этом, что приведет к тому, что ListView не будет доступен для кликов. Если кто-то это знает, сообщите нам,

Смежные вопросы