2011-12-05 125 views
4

更新:我發現 代碼移除setOnItemClickListener在列表視圖擴展活動

v.setFocusable(true); v.setClickable(true);解決

和只添加

v.setEnabled(true);

,並在我的XML (ListView)add

android:drawSelectorOnTop="true" android:focusable="true"


當我點擊它沒有任何反應,甚至列表視圖不集中。

我嘗試添加這一切:

  v.setClickable(true); 
      v.setEnabled(true); 
      v.setFocusable(true); 

只有這樣才能正常工作是我添加以下代碼:

但這並不確定正在點擊什麼項目

How to handle ListView click in Android

並且結果仍然一樣。

這裏的是代碼:

public class AppsInspectorActivity extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
     public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
//[...] 
    ListView app_listView = (ListView)findViewById(R.id.listview); 

// I try setOnItemClickListene here - 1 
    app_listView.setOnItemClickListener(new OnItemClickListener() { 
     public void onItemClick(AdapterView<?> parent, View view, 
       int position, long id) { 
      Toast.makeText(getApplicationContext(), "I Clicked on Row " + position + ".", Toast.LENGTH_SHORT).show(); 

     } 
    }); 
} 

適配器

public class AppAdapter extends BaseAdapter { 

      Context context; 
      ArrayList<AppInfo> dataList=new ArrayList<AppInfo>(); 
      public AppAdapter(Context context,ArrayList<AppInfo> inputDataList) 
      { 

       this.context = context; 
       dataList.clear(); 
       for(int i=0;i<inputDataList.size();i++) 
       { 
        dataList.add(inputDataList.get(i)); 
       } 
      } 
      public int getCount() { 
       // TODO Auto-generated method stub 
       return dataList.size(); 
      } 

      public Object getItem(int position) { 
       // TODO Auto-generated method stub 
       return dataList.get(position); 
      } 

      public long getItemId(int position) { 
       // TODO Auto-generated method stub 
       return position; 
      } 

      public View getView(int position, View convertView, ViewGroup parent) { 

       View v=convertView; 
       final AppInfo appUnit = dataList.get(position); 

       ListView app_listView = (ListView)findViewById(R.id.listview); 

       /** Remove this , i just try to add to see setOnItemClickListener will work at here or not **/ 
       app_listView.setOnItemClickListener(new OnItemClickListener() { 
        public void onItemClick(AdapterView<?> parent, View view, 
         int position, long id) { 
        Toast.makeText(getApplicationContext(), "I Clicked on Row " + position + ".", Toast.LENGTH_SHORT).show(); 
        } 
       }); 

       if(v==null) 
       { 
        LayoutInflater vi=(LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
        v=vi.inflate(R.layout.app_row, null); 
        v.setClickable(true); 
        v.setEnabled(true); 
        v.setFocusable(true);   
       } 


       TextView appName=(TextView)v.findViewById(R.id.appName); 
       ImageView appIcon=(ImageView)v.findViewById(R.id.AppIcon); 

       if(appName!=null) 
        appName.setText(appUnit.appName); 
       if(appIcon!=null) 
        appIcon.setImageDrawable(appUnit.appIcon); 
       return v; 
      } 
     } 
} 
} 
+0

你能看到列表視圖中的任何listitem? – Hiral

+0

是的,我可以看到,但它不能集中和點擊 – xAnGz

回答

1

我找到了解決辦法去除

v.setFocusable(true); v.setClickable(true); in the code

和只添加

v.setEnabled(true);

,並在我的XML(ListView控件)添加

android:drawSelectorOnTop="true" android:focusable="true"

0

喜刪除setOnItemClickListener在Adapter.Refer的getView這listView

0

使用AppsInspectorActivity.this代替getApplicationContext()

public class AppsInspectorActivity extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
     public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
//[...] 
    ListView app_listView = (ListView)findViewById(R.id.listview); 

// I try setOnItemClickListene here - 1 
    app_listView.setOnItemClickListener(new OnItemClickListener() { 
     public void onItemClick(AdapterView<?> parent, View view, 
       int position, long id) { 
      Toast.makeText(AppsInspectorActivity.this, "I Clicked on Row " + position + ".", Toast.LENGTH_SHORT).show(); 

     } 
    }); 
} 

,並從getView()方法去除setOnItemClickListener在適配器

+0

結果仍然是相同的甚至setOnItemClickListener移動到onCreate – xAnGz

0

更改getView()下面一個,並告訴它是否工作

public View getView(int position, View convertView, ViewGroup parent) { 

      View v=convertView; 
      final AppInfo appUnit = dataList.get(position); 
      if(v==null) 
      { 
       LayoutInflater vi=(LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
       v=vi.inflate(R.layout.app_row, null); 
       v.setClickable(true); 
       v.setEnabled(true); 
       v.setFocusable(true);   
      } 


      TextView appName=(TextView)v.findViewById(R.id.appName); 
      ImageView appIcon=(ImageView)v.findViewById(R.id.AppIcon); 

      if(appName!=null) 
       appName.setText(appUnit.appName); 
      if(appIcon!=null) 
       appIcon.setImageDrawable(appUnit.appIcon); 
      return v; 
     } 
+0

仍然是相同的,它不工作 – xAnGz

0

你必須設置適配器設置前的ListView它的onItemClick.Here你只是得到了listview但沒有items.so當你點擊listview時,它的onItemClick從不被調用。

+0

但我確實得到列表視圖項目 – xAnGz

1

您可以發佈main.xml佈局。在我看來,你在使用觸摸事件的列表視圖頂部有另一個視圖。

+0

Nvm我找到了解決方案,我將更新答案ltr – xAnGz