Listview 删除项目并获取它';设置TOAST消息的标题或更改项目自定义适配器的名称
我有一个自定义适配器,我从互联网上得到的。 里面有食谱,每个食谱都有图片和标题。 我在谷歌和这个网站上到处寻找我的具体案例,但没有找到我真正需要的。 我发现的信息对我来说太复杂了,无法适应我自己的案例问题 实际上,对于初学者以上的人来说,这应该是一个简单的任务,但不幸的是,我是一个初学者Listview 删除项目并获取它';设置TOAST消息的标题或更改项目自定义适配器的名称,listview,delete-row,custom-adapter,Listview,Delete Row,Custom Adapter,我有一个自定义适配器,我从互联网上得到的。 里面有食谱,每个食谱都有图片和标题。 我在谷歌和这个网站上到处寻找我的具体案例,但没有找到我真正需要的。 我发现的信息对我来说太复杂了,无法适应我自己的案例问题 实际上,对于初学者以上的人来说,这应该是一个简单的任务,但不幸的是,我是一个初学者 我需要有从列表中删除项目的选项 我需要一个toast消息来显示删除后的名称 我需要能够更改项目的标题 当它是一个ArrayAdapter时,这很容易,因为适配器中没有image变量,但现在查找标题、更改名称
- 我需要有从列表中删除项目的选项
- 我需要一个toast消息来显示删除后的名称
- 我需要能够更改项目的标题
public class MainActivity extends Activity {
private ListView listView1;
public String mName;
View btnAdd;
String mTitle;
Cursor mCursor;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnAdd = this.findViewById(R.id.btnAdd);
Recipe recipe_data[] = new Recipe[]
{
new Recipe(R.drawable.cherry_pie, "Cherry Pie"),
new Recipe(R.drawable.chocchip_cookie, "Cocolate Chips Cookies"),
new Recipe(R.drawable.quaker_cookie, "Quaker Cookies"),
new Recipe(R.drawable.short_pastry, "Short Pastry"),
new Recipe(R.drawable.flour, "Will be added in the future...")
};
RecipeAdapter adapter = new RecipeAdapter(this,
R.layout.listview_item_row, recipe_data);
listView1 = (ListView)findViewById(R.id.listView1);
View header = (View)getLayoutInflater().inflate(R.layout.listview_header_row, null);
listView1.addHeaderView(header);
listView1.setAdapter(adapter);
OnClickListener listen = new OnClickListener() {
@Override
public void onClick(View v) {
EditText edit = (EditText) findViewById(R.id.txtItem);
//we get the text into a global string
mName = ((TextView)edit).getText().toString();
//we reverse the edit var back to be empty
edit.setText("");
//this.notifyDataSetChanged();
}
};
btnAdd.setOnClickListener(listen);
registerForContextMenu(listView1);
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
menu.setHeaderTitle("Context Menu");
menu.add(0, v.getId(), 0, "Change Name");
menu.add(0, v.getId(), 0, "Delete");
}
@Override
public boolean onContextItemSelected(MenuItem item) {
AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
if(item.getTitle()=="Change Name"){changeN(item.getItemId());}
else if(item.getTitle()=="Delete"){
Toast.makeText(this, "Item " + mTitle + " has been removed..", Toast.LENGTH_SHORT).show();
}
else {return false;}
return true;
}
//Change item name function
public void changeN(int id){
}
}
public class RecipeAdapter extends ArrayAdapter<Recipe>{
Context context;
int layoutResourceId;
Recipe data[] = null;
public RecipeAdapter(Context context, int layoutResourceId, Recipe[] 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;
RecipeHolder holder = null;
if(row == null)
{
LayoutInflater inflater = ((Activity)context).getLayoutInflater();
row = inflater.inflate(layoutResourceId, parent, false);
holder = new RecipeHolder();
holder.imgIcon = (ImageView)row.findViewById(R.id.imgIcon);
holder.txtTitle = (TextView)row.findViewById(R.id.txtTitle);
row.setTag(holder);
}
else
{
holder = (RecipeHolder)row.getTag();
}
Recipe recipe = data[position];
holder.txtTitle.setText(recipe.title);
holder.imgIcon.setImageResource(recipe.icon);
return row;
}
static class RecipeHolder
{
ImageView imgIcon;
TextView txtTitle;
}
}
public class Recipe {
public int icon;
public String title;
public Recipe(){
super();
}
public Recipe(int icon, String title) {
super();
this.icon = icon;
this.title = title;
}
@Override
public String toString() {
return this.title;
}
}
公共类MainActivity扩展活动{
私有列表视图列表视图1;
公共字符串mName;
查看btnAdd;
字符串mTitle;
光标mCursor;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnAdd=this.findviewbyd(R.id.btnAdd);
配方数据[]=新配方[]
{
新配方(R.drawable.cherry_派,“樱桃派”),
新配方(R.drawable.chocchip_cookie,“可可片饼干”),
新配方(R.drawable.桂格饼干,“桂格饼干”),
新配方(R.drawable.short_糕点,“short糕点”),
新配方(R.drawable.面粉,“将在未来添加…”)
};
RecipeAdapter适配器=新RecipeAdapter(此,
R.layout.listview(项目行、配方数据);
listView1=(ListView)findViewById(R.id.listView1);
视图标题=(视图)GetLayoutFlater()。充气(R.layout.listview\u header\u行,空);
listView1.addHeaderView(标题);
listView1.setAdapter(适配器);
OnClickListener Listener=新建OnClickListener(){
@凌驾
公共void onClick(视图v){
EditText edit=(EditText)findViewById(R.id.txtItem);
//我们将文本转换成一个全局字符串
mName=((文本视图)编辑).getText().toString();
//我们将编辑变量反转为空
edit.setText(“”);
//this.notifyDataSetChanged();
}
};
btnAdd.setOnClickListener(listen);
registerForContextMenu(listView1);
}
@凌驾
public void onCreateContextMenu(ContextMenu菜单,视图v,ContextMenuInfo菜单信息){
super.onCreateContextMenu(menu,v,menuInfo);
menu.setHeaderTitle(“上下文菜单”);
添加(0,v.getId(),0,“更改名称”);
添加(0,v.getId(),0,“删除”);
}
@凌驾
公共布尔值onContextItemSelected(MenuItem项){
AdapterContextMenuInfo信息=(AdapterContextMenuInfo)项。getMenuInfo();
如果(item.getTitle()=“更改名称”){changeN(item.getItemId());}
else if(item.getTitle()=“删除”){
Toast.makeText(此“项”+mTitle+”已被删除…),Toast.LENGTH\u SHORT.show();
}
else{return false;}
返回true;
}
//更改项目名称功能
公共无效更改(整数id){
}
}
公共类RecipeAdapter扩展了ArrayAdapter{
语境;
国际布局资源;
配方数据[]=null;
公共RecipeAdapter(上下文上下文、内部布局资源ID、配方[]数据){
超级(上下文、布局资源ID、数据);
this.layoutResourceId=layoutResourceId;
this.context=上下文;
这个数据=数据;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
视图行=转换视图;
RecipeHolder holder=null;
if(行==null)
{
LayoutInflater充气器=((活动)上下文)。getLayoutInflater();
行=充气机。充气(layoutResourceId,父级,false);
支架=新的往复式支架();
holder.imgIcon=(ImageView)row.findViewById(R.id.imgIcon);
holder.txtTitle=(TextView)row.findViewById(R.id.txtTitle);
row.setTag(支架);
}
其他的
{
holder=(RecipeHolder)row.getTag();
}
配方=数据[位置];
holder.txtTitle.setText(recipe.title);
holder.imgIcon.setImageResource(recipe.icon);
返回行;
}
静态类RecipeHolder
{
ImageView imgIcon;
TextView-txtTitle;
}
}
公共课食谱{
公共int图标;
公共字符串标题;
公共配方(){
超级();
}
公共配方(整数图标、字符串标题){
超级();
this.icon=图标;
this.title=标题;
}
@凌驾
公共字符串toString(){
返回此.title;
}
}
回答自己的问题。。
需要添加此行:mTitle=mArrayAdapter.getItem(pos).name;
(祝酒词前)