2011-10-26 263 views
0

我有一個列表視圖填充如下,它的工作。我的問題是能夠處理onclick。我沒有擴展列表活動,因爲我所有的活動擴展了一個常見的活動,我用它來設置所有活動中使用的公共變量/首選項/等。有沒有辦法處理onclick而不擴展listactivity?如果沒有,有沒有辦法導入列表活動(通過類或其他)?如何在不擴展ListActivity的情況下處理onClick for ListView?

ListView lv = (ListView)findViewById(R.id.listViewGhostCams); 
    SimpleAdapter adapter = new SimpleAdapter(
      this, 
      list, 
      R.layout.custom_row_view, 
      new String[] {"pen","price","color"}, 
      new int[] {R.id.text1,R.id.text2, R.id.text3} 
      ); 
    populateList(); 
    lv.setAdapter(adapter); 

我是新來android/java編程所以請溫柔! :-)

感謝, 香

回答

8

您可以OnItemClickListener

lv.setOnItemClickListener(new OnItemClickListener(){ 

     @Override 
     public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { 
      //Your code 
     } 

    }); 
+0

這個工作的用戶這樣做!謝謝。我如何參考選擇哪個項目?是否有一個變量或任何傳遞來指示被點擊的項目?再次感謝。 –

+0

參數變爲父,rowView,位置和id。因此,您可以將您使用的條目列表設置爲適配器並獲取位置索引處的項目。或者你可以使用arg0.getItemAtPosition(arg2)我想。 – Bobbake4

7

我想你指的onClick一個項目?只需使用該位:

lv.setOnItemClickListener(new OnItemClickListener() { 

    @Override    
    public void onItemClick(AdapterView<?> parent, View 
    view, int position, long id) { 
    } 
}); 
0

可以onItemClickListener

public class MainActivity extends Activity { 
    ListView listView; 
    String[] listPlanet={"mercury","Venus","Mars","Saturn","Neptune"}; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.main); 

     listView = (ListView)findViewById(R.id.listView)); 

     ArrayAdapter<String> adapter = 
      new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,   listPlanet); 

     listview.setAdapter(adapter); 

     listView.setOnItemClickListener(new OnItemClickListener(){ 

      @Override 
      public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3)  { 
       Toast.makeText(getAppicationContext(), listPlanet.get(arg2), Toast.LENGTH_SHORT).show(); 

     } 

    }); 

    } 

} 
相關問題