2012-04-24 18 views
13

Tôi muốn tạo listview. Tôi nhận được giá trị từ JSON. Ở đây tôi có giá trị từ json vào listview nhưng tôi không thể có được phương thức onItemclickListener. Tại sao điều này xảy ra tôi không biết, Xin vui lòng giúp tôi mã hóa của tôi như hình dưới đây.Cách tạo listview trênItemclicklistener

Logcat không hiển thị bất kỳ thứ gì.

Cảm ơn.

<ListView 
    android:id="@+id/contests_listView" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:layout_below="@+id/header" 
    android:focusable="true"> 
</ListView> 

Activity.java

public class Activites_Activity extends CheerfoolznativeActivity { 

private ListView contests_listView; 
private ProgressBar pgb; 
ActivitiesBean bean; 
ArrayList<Object> listActivities; 
ListAdapter adapter; 

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    setContentView(R.layout.activity_listview); 
    setHeader("Activites"); 


    contests_listView = (ListView) findViewById(R.id.contests_listView); 
    pgb = (ProgressBar) findViewById(R.id.contests_progressBar); 
    listActivities = new ArrayList<Object>(); 

    new FetchActivitesTask().execute(); 

} 

public class FetchActivitesTask extends AsyncTask<Void, Void, Void> { 

    int i =0; 
    @Override 
    protected void onPreExecute() { 
     // TODO Auto-generated method stub 
     super.onPreExecute(); 
     pgb.setVisibility(View.VISIBLE); 
    } 

    @Override 
    protected Void doInBackground(Void... params) { 
     // TODO Auto-generated method stub 

     String url = "my json URL"; 
     String strResponse = util.makeWebCall(url); 

     try { 

      //my json logic here   
     } 
     catch (JSONException e) { 

      e.printStackTrace(); 

     } 

     return null; 
    } 

    @Override 
    public void onPostExecute(Void result) { 
     // TODO Auto-generated method stub 
     super.onPostExecute(result); 

     pgb.setVisibility(View.GONE); 
     displayAdapter(); 
    } 
} 

public void displayAdapter() 
{ 
    adapter = new ListAdapter(this, listActivities); 
    contests_listView.setAdapter(adapter); 
    contests_listView.setOnItemClickListener(new OnItemClickListener() { 

     @Override 
     public void onItemClick(AdapterView<?> arg0, View arg1, 
       int position, long id) { 

      // Toast.makeText(getApplicationContext(),"Title => "+items.get(position), Toast.LENGTH_SHORT).show(); 

      System.out.println("=========== Click"); 
      bean = (ActivitiesBean) adapter.getItem(position); 

      Intent in1 = new Intent(Activites_Activity.this, Activity_display.class); 
      in1.putExtra("ActivityObject", bean); 
      startActivity(in1); 
     } 
    }); 


} 
} 

tôi cũng sử dụng này

contests_listView.setItemsCanFocus(true); 
+0

nó hiển thị các mục trong ListView? và nó in '=========== Nhấp vào 'trong nhật ký khi bạn nhấp vào một mục? – waqaslam

+0

bạn đã thử setOnItemSelectedListener chưa? Tôi nghĩ rằng nó có thể mặc định gọi đó là người nghe? – MikeIsrael

+0

@Waqas, vâng tôi nhận được giá trị trong listview nhưng không hiển thị nhấp chuột trong nhật ký, cũng không hiển thị bánh mì nướng. –

Trả lời

21

Hãy thử điều này:

contests_listView.setOnItemClickListener(new android.widget.AdapterView.OnItemClickListener() { 
    @Override 
    public void onItemClick(AdapterView<?> parent, View view,int position, long id) { 
     String item = (String) contests_listView.getItemAtPosition(position); 
     Toast.makeText(this,"You selected : " + item,Toast.LENGTH_SHORT).show();     
    } 
}); 
+0

Cảm ơn, nhưng nó không hoạt động, xin vui lòng cho tôi biết nếu có giải pháp khác cho vấn đề này. –

+0

Nhưng bạn đang gặp lỗi gì? Nếu logcat không cung cấp bất kỳ đầu ra nào thì hãy thử đặt lại ADB thông qua DDMS. – GAMA

+1

Tôi nhận được 'contests_listView' phải được khai báo là cuối cùng? – Dan

0

Hãy thử mã này:

protected void onListItemClick(ListView l, View v, int position, long id) { 

super.onListItemClick(l, v, position, id); 

Toast.makeText(this, "message", Toast.LENGTH_LONG).show(); 
} 
+0

Cuối cùng tôi nhận được giải pháp, do nhầm lẫn tôi lấy ScrollView vào listitem của tôi, Sau khi loại bỏ nó hoạt động. –

0

Sử dụng này:

contests_listView.setOnItemClickListener(new AdapaterView.OnItemClickListener() { 

     @Override 
     public void onItemClick(AdapterView<?> arg0, View arg1, 
       int position, long id) { 

      Intent in1 = new Intent(Activites_Activity.this, Activity_display.class); 

      startActivity(in1); 
     } 
    }); 
Các vấn đề liên quan