2012-08-05 107 views
1

我有一個ListAdapter包含一個字符串數組。ListView onItemClick不工作

當我點擊列表中的任何項目時,我希望應用程序將當前點擊的項目傳遞給另一個活動並轉到另一個活動。

我想設置onItemClickListener但沒有成功。

的活動:

package com.nituach.nituach; 

import java.util.List; 

import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.AdapterView; 
import android.widget.AdapterView.OnItemClickListener; 
import android.widget.ArrayAdapter; 
import android.widget.Button; 
import android.widget.ListView; 

public class NituachActivity extends Activity implements OnClickListener, 
OnItemClickListener { 

Button addNewBuisness; 
ListView blv; 
public static int bname; 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    final String TAG = NituachActivity.class.getSimpleName(); 
    addNewBuisness = (Button) findViewById(R.id.btnAddNewBuisness); 
    addNewBuisness.setOnClickListener(NituachActivity.this); 
    blv = (ListView) findViewById(R.id.listView1); 

    Log.d(TAG, "All Variables was created"); 

    DataBase dbc = new DataBase(NituachActivity.this); 
    dbc.open(); 

    List<String> cs = dbc.getData(); 

    blv.setAdapter(new ArrayAdapter<String>(this, 
      android.R.layout.simple_list_item_1, cs)); 

    dbc.close(); 
    blv.setOnItemClickListener(NituachActivity.this); 


} 

public void onClick(View v) { 
    if (v == addNewBuisness) { 
     Intent addnbIntent = new Intent(NituachActivity.this, 
       AddNewBuisness.class); 
     NituachActivity.this.startActivity(addnbIntent);  
    }   

} 

public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { 


} 

} 
+0

也許addNewBuisness.setClickable(真)可以幫助? – 2012-08-05 19:05:43

回答

2

onItemClick() - 方法是空的。

ListView使用OnItemClickListener,它導出onItemClick()-方法。您的活動實現了「正常」OnClickListener(其中公開onClick()-方法)和OnItemClickListener。你不需要OnClickListener,只需要前者。

這往往更具可讀性在現場添加一個匿名執行權:

blv.setOnItemClickListener(new OnItemClickListener(){ 
    @Override 
    public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { 
    // Your Code 
    } 
}); 
+0

是的,我知道。我不知道如何從這一點... – Dori 2012-08-05 19:03:17

+0

@Dori更新了答案,檢查出來。 – 2012-08-05 19:09:06

+0

檢查點擊是否在按鈕上而不是ListView(addNewBuisness)的方法是什麼? – Dori 2012-08-05 19:16:09

0

聲明一個靜態變量,在當前的活動並將其值設置爲單擊項目被點擊列表的任何項目時。

public static String abc; 

public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { 


      abc = cs[arg2]; 
      Intent intent = new Intent(context, AddNewBusiness.class); 
      startActivity(intent); 
     } 
+0

另外,從代碼中刪除onClick()。無需在您的活動中實施OnClickListener。只需實現OnItemClickListener並使用我在答案中給出的函數定義。 – Swayam 2012-08-05 19:05:24

0

試試這個,可能會幫助ü...

public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { 
//here arg2 is the position of that item in the listview, which u can use for indexing the string array, assumes `cs` is ur string array 
    Intent addnbIntent = new Intent(NituachActivity.this, 
      AddNewBuisness.class); 
    addnbIntent.putExtra("value",cs[arg2]) 
    NituachActivity.this.startActivity(addnbIntent);  

}