![](/img/trans.png)
[英]How to Implement onItemClick() for multiple ListViews separately?
[英]How to implement onItemClick method in FragmentList?
我需要在一個標簽片段中使用listView,因此我從以下示例中實現了代碼: http : //geekswithblogs.net/bosuch/archive/2011/01/31/android---create-a-custom-multi-line-listview-綁定到一個.aspx 。 當MainActivity中的某些操作完成時,將顯示該列表,但我不知道如何單擊它。 我試過像本示例中所示,但是它不起作用,我認為問題是因為我有片段,該示例在MainActivity中。 請幫忙!
public class FragmentLogbook extends ListFragment {
//handler for passing data through thread
private Handler handler;
//progress dialog
private ProgressDialog progressDialog;
private int progressBarStatus;
SingletonLogbookPack mSingletonLogbookPack = SingletonLogbookPack.getInstance();
ArrayList<SearchResults> searchResults = GetSearchResults();
MyCustomBaseAdapter mAdapter;
// Create an empty adapter we will use to display the loaded data.
//CustomArrayAdapter mAdapter = new CustomArrayAdapter(getActivity());
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
handler = new Handler();
startDownloadingLogbooks();
}
private void startDownloadingLogbooks() {
progressDialog = new ProgressDialog(getActivity());
//progressDialog = ProgressDialog.show(getActivity(),"Loading Logbooks", "Please wait...");
progressDialog.setCancelable(false);
progressDialog.setMessage("Loading Logbooks ...");
progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
progressDialog.setProgress(0);
progressDialog.setMax(100);
progressDialog.show();
//reset progress bar status
progressBarStatus = 0;
// start the time consuming task in a new thread
Thread thread = new Thread() {
public void run () {
boolean p = ((MainActivity)getActivity()).mGpsColibri.mBinary.getLogbook();
while ( ((MainActivity)getActivity()).logbookFinished != true ) {
progressBarStatus = (int) ((MainActivity)getActivity()).GetProgressValue();
progressDialog.setProgress(progressBarStatus);
//in this time Progress dialog will be on screen
}
//set logbookFinished variable from MainActivity to false
((MainActivity)getActivity()).logbookFinished = false;
// this will handle the post task.
// it will run when the time consuming task get finished
handler.post(new Runnable() {
@Override
public void run() {
// Update your UI or
// do any Post job after the time consuming task
// remember to dismiss the progress dialog here.
updateUI();
progressDialog.dismiss();
}
});
}
};
thread.start();
}
private void updateUI() {
mAdapter = new MyCustomBaseAdapter(getActivity(), searchResults);
setListAdapter(mAdapter);
ListView listview = FragmentLogbook.this.getListView();
// set onItemClick here
listview.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> adapterview, View view, int pos,
long id) {
// do your work here...
Toast.makeText(getActivity(), "" + pos, Toast.LENGTH_SHORT).show();
}
});
}
private ArrayList<SearchResults> GetSearchResults(){
ArrayList<SearchResults> results = new ArrayList<SearchResults>();
SearchResults sr1 = new SearchResults();
sr1.setName("John Smith");
sr1.setCityState("Dallas, TX");
sr1.setPhone("214-555-1234");
results.add(sr1);
sr1 = new SearchResults();
sr1.setName("Jane Doe");
sr1.setCityState("Atlanta, GA");
sr1.setPhone("469-555-2587");
results.add(sr1);
sr1 = new SearchResults();
sr1.setName("Steve Young");
sr1.setCityState("Miami, FL");
sr1.setPhone("305-555-7895");
results.add(sr1);
sr1 = new SearchResults();
sr1.setName("Fred Jones");
sr1.setCityState("Las Vegas, NV");
sr1.setPhone("612-555-1234");
results.add(sr1);
sr1 = new SearchResults();
sr1.setName("Bob Marsh");
sr1.setCityState("New York, NY");
sr1.setPhone("612-555-5678");
results.add(sr1);
sr1 = new SearchResults();
sr1.setName("Harold Funk");
sr1.setCityState("Chicago, IL");
sr1.setPhone("612-555-8765");
results.add(sr1);
sr1 = new SearchResults();
sr1.setName("Scott Dorf");
sr1.setCityState("Winslow, AZ");
sr1.setPhone("612-555-5432");
results.add(sr1);
sr1 = new SearchResults();
sr1.setName("Mike Hail");
sr1.setCityState("Seattle, WA");
sr1.setPhone("612-555-0961");
results.add(sr1);
sr1 = new SearchResults();
sr1.setName("Scott Dorf");
sr1.setCityState("Winslow, AZ");
sr1.setPhone("612-555-5432");
results.add(sr1);
sr1 = new SearchResults();
sr1.setName("Mike Hail");
sr1.setCityState("Seattle, WA");
sr1.setPhone("612-555-0961");
results.add(sr1);
return results;
}
}
設置listview適配器后嘗試此操作
getListView().setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
// TODO Auto-generated method stub
}
});
您可以在updateUI()
內部為ListFragment行添加onItemClick
偵聽器:
private void updateUI() {
mAdapter = new MyCustomBaseAdapter(getActivity(), searchResults);
setListAdapter(mAdapter);
ListView listview = FragmentLogbook.this.getListView(); //<< initialize ListView
// set onItemClick here
listview.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> adapterview, View view, int pos,
long id) {
// do your work here...
}
});
}
@Override
public void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
/// do your code here
}
listview.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0,View arg1, int arg2, long arg3) {
String requiredvalue= ((TextView) arg1.findViewById(R.id.viewid)).getText().toString();
Log.i("requiredvalue", requiredvalue);
}
要么
@Override
public void onListItemClick(ListView l, View v, int position, long id) {
// TODO Auto-generated method stub
super.onListItemClick(l, v, position, id);
searchResults.get(position);
Log.i("requiredvalue", ""+searchResults.get(position));
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.