我有列表视图(从数据库中检索数据并放入列表视图)。我想要做的是使每个项目都可点击,一旦点击,我希望它进入一个新的活动,我已经尝试过,setOnItemClickListener
但它不起作用
public class MomentsActivity extends AppCompatActivity {
ListView listView;
TextView description;
TextView location;
TextView name;
//ImageView image; used later when we want to display the image
private TextView mTextMessage;
private BottomNavigationView.OnNavigationItemSelectedListener mOnNavigationItemSelectedListener
= new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()) {
case R.id.navigation_moments:
Intent intent = new Intent(MomentsActivity.this, MomentsActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
startActivity(intent);
break;
case R.id.navigation_addmoment:
Intent intent2 = new Intent(MomentsActivity.this, AddMomentActivity.class);
intent2.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
startActivity(intent2);
break;
}
return false;
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
myDb = new DatabaseHelper(this);
setContentView(R.layout.activity_moments);
BottomNavigationView navigation = (BottomNavigationView) findViewById(R.id.navigation);
navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener);
mList = this.findViewById(R.id.my_listview);
listView = (ListView) findViewById(R.id.my_listview);
mList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Intent intent = new Intent(MomentsActivity.this,MainActivity.class);
intent.putExtra("textview_name", listView.getItemIdAtPosition(position));
startActivity(intent);
}
});
manageListView();
getSupportActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
getSupportActionBar().setCustomView(R.layout.actionbar_layout);
}
DatabaseHelper myDb;
EditText editTitle, editDescription, editLocation;
Button btnAddData;
Button btnViewAll;
SimpleCursorAdapter mSCA; //Adapts/Handles the data for the listview
ListView mList;
Cursor mCsr;
int[] item_layout_ids_for_list = new int[]{
R.id.textview_name,
R.id.textview_description,
R.id.textview_location
};
String[] columns_to_list = new String[]{
DatabaseHelper.COL_2,
DatabaseHelper.COL_3,
DatabaseHelper.COL_5
};
private void manageListView() {
mCsr = myDb.getAllData();
if (mSCA == null) {
// Builds the Adapter for the List
mSCA = new SimpleCursorAdapter(
this,
R.layout.mylistview_item, mCsr,
columns_to_list,
item_layout_ids_for_list,
0
);
mList.setAdapter(mSCA); // Ties the Adapter to the ListView
} else {
mSCA.swapCursor(mCsr); // Refresh the List
}
}
@Override
protected void onDestroy() {
super.onDestroy();
mCsr.close();
}
@Override
protected void onResume() {
super.onResume();
manageListView();
}
}
在列表中单击后用于执行操作的最佳方法是getview()
在列表视图 适配器内的方法中执行此操作
所以在你的适配器中
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
.....
.....
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//use context in adapter constructor;
Activity activity = (Activity) context
Intent intent = new Intent(context,MainActivity.class);
intent.putExtra("textview_name", listView.getItemIdAtPosition(position));
activity.startActivity(intent);
}
});
return view ;
}
并且不要忘记删除您setOnItemClickListener
的listview
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句