onListItemClick не стреляет в ListActivity
В моей основной деятельности у меня есть панель действий с навигационными вкладками и элементами действий. Один из моих элементов действий вызывает ListFragment, который отображает пользовательский просмотр списка с изображением и просмотром текста. Я использую ActionBarSherlock для совместимости. Вот код, где я вызываю новый ListFragment:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
Intent intent = new Intent(this, ERGProActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
return true;
case R.id.menuitem_search:
onSearchRequested();
return true;
case R.id.menuitem_info:
// Create new fragment and transaction
SherlockListFragment aboutListFragment = new AboutListFragment();
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
// Replace whatever is in the fragment_container view with this fragment,
// and add the transaction to the back stack
ft.replace(R.id.root, aboutListFragment);
ft.addToBackStack(null);
ActionBar actionBar = getSupportActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);
// Commit the transaction
ft.commit();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
Вот мой код ListFragment:
public class AboutListFragment extends SherlockListFragment {
private ListView listView;
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
getActivity().setContentView(R.layout.aboutlist);
CustomMenu menu_data[] = new CustomMenu[]
{ new CustomMenu(R.drawable.info, "About"),
new CustomMenu(R.drawable.legal, "Disclaimer"),};
CustomMenuAdapter adapter = new CustomMenuAdapter(getActivity(),
R.layout.listview_item_row, menu_data);
listView = (ListView) getActivity().findViewById(R.id.listView1);
listView.setAdapter(adapter);
}
@Override
public void onListItemClick(ListView l, View v, int position, long id) {
switch (position) {
case 0:
// about
Log.i("ABOUT"," - About Selected");
case 1:
Log.i("ABOUT"," - Disclaimer Selected");
// disclaimer
}
}
}
Вот мой код CustomAdapter:
public class CustomMenuAdapter extends ArrayAdapter<CustomMenu> {
Context context;
int layoutResourceId;
CustomMenu data[] = null;
public CustomMenuAdapter(Context context, int layoutResourceId, CustomMenu[] data) {
super(context, layoutResourceId, data);
this.layoutResourceId = layoutResourceId;
this.context = context;
this.data = data;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row = convertView;
CustomMenuHolder holder = null;
if(row == null)
{
LayoutInflater inflater = ((Activity)context).getLayoutInflater();
row = inflater.inflate(layoutResourceId, parent, false);
holder = new CustomMenuHolder();
holder.imgIcon = (ImageView)row.findViewById(R.id.imgIcon);
holder.txtTitle = (TextView)row.findViewById(R.id.txtTitle);
row.setTag(holder);
}
else
{
holder = (CustomMenuHolder)row.getTag();
}
CustomMenu menu = data[position];
holder.txtTitle.setText(menu.title);
holder.imgIcon.setImageResource(menu.icon);
return row;
}
static class CustomMenuHolder
{
ImageView imgIcon;
TextView txtTitle;
}
}
Любой вклад или предложения будут оценены! Заранее спасибо.
Спасибо всем за ваш вклад! Вот окончательный рабочий код:
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
getActivity().setContentView(R.layout.aboutlist);
CustomMenu menu_data[] = new CustomMenu[]
{ new CustomMenu(R.drawable.info, "About"),
new CustomMenu(R.drawable.legal, "Disclaimer"),};
CustomMenuAdapter adapter = new CustomMenuAdapter(getActivity(),
R.layout.listview_item_row, menu_data);
listView = (ListView) getActivity().findViewById(R.id.listView1);
// listView.setOnItemSelectedListener(this);
listView.setAdapter(adapter);
listView.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
switch (position) {
case 0:
Log.i("ABOUT"," - About Selected");
break;
case 1:
Log.i("ABOUT"," - Disclaimer Selected");
break;
default:
// do nothing
Log.i("ABOUT"," - default");
break;
}
}
});
}
2 ответа
Решение
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
// TODO Auto-generated method stub
}
});
попробуйте с этим кодом.
Используйте код ниже:
listView.setOnItemSelectedListener(this);
после реализации методов вы получаете следующие методы:
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
// TODO Auto-generated method stub
Do your code here.....
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}