不要改变列表视图名称 [英] Don't change the name on the listView
问题描述
我有一个的ListView
在活动A,如下图所示。所有值和名称实际上是来自活动Ç回到了B,则只有A。
I have a listView
in Activity A as shown below. All the values and name were actually returned from Activity C to B then only A.
在单击第一个列表,它应该在项目
和值 3
> EDITTEXT B.但它显示医疗
这是实际上是从最后的名单得到。
When the first list is clicked, it should display text Project
and value 3
on editText
B. But it displays Medical
which was actually getting from the last list.
我改从3到43的值后,回到A,名字改了。我应该怎么做,这样的名称将保持不变?
After I change the value from 3 to 43 and return to A, the name changed. What should I do so that the name will remain the same ?
活动A
ArrayAdapter<String> adapter;
ArrayList<String> m_listItems = new ArrayList<String>();
int mClickedPosition;
adapter=new ArrayAdapter<String (getActivity(),R.layout.claims,R.id.textView1,m_listItems);
listV = (ListView) claims.findViewById(R.id.listView1);
listV.setOnItemClickListener(new AdapterView.OnItemClickListener() { // if list clicked
public void onItemClick(AdapterView<?> listView, View view,
int position, long id) {
mClickedPosition = position;
if (name.equals("Project")) {
String temp[] = m_listItems.get(position).split("\\s\\s+");
result = temp[temp.length - 1].trim();
result = result.replace("RM","");
Intent intent = new Intent(Claims1.this.getActivity(), Project1.class);
intent.putExtra("bitmap", true);
intent.putExtra("name", name);
intent.putExtra("result", result);
startActivityForResult(intent, 0);
Log.e("RESULT", "Result= " + result);
}
else if(name.equals("Medical"))
{
String temp[] = m_listItems.get(position).split("\\s\\s+");
result = temp[temp.length - 1].trim();
result = result.replace("RM","");
Intent intent = new Intent(Claims1.this.getActivity(), Medical.class);
intent.putExtra("bitmap", true);
intent.putExtra("name", name);
intent.putExtra("result", result);
startActivityForResult(intent, 1);
}
}
});
return claims;
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode) {
case 0: // for Project
result = data.getStringExtra("text"); //get from B
name = data.getStringExtra("a");
description = data.getStringExtra("c");
as = Long.parseLong(result);
Log.d("FIRST", "result:" + result);
Text = " " + name + " " + "RM" + result + "";
if (mClickedPosition == -1) { // if is icon button clicked
m_listItems.add(Text);
} else {
m_listItems.set(mClickedPosition, Text);
}
adapter.notifyDataSetChanged();
listV.setAdapter(adapter);
break;
case 1: // for Medical
result = data.getStringExtra("text");
name = data.getStringExtra("a");
description = data.getStringExtra("c");
as = Long.parseLong(result);
Log.d("FIRST", "result:" + result);
Text = " " + name + " " + "RM" + result + "";
// m_listItems.clear();
if (mClickedPosition==-1)
{
m_listItems.add(Text);
}
else
{
m_listItems.set(mClickedPosition, Text);
}
adapter.notifyDataSetChanged();
listV.setAdapter(adapter);
break;
活动B (PROJECT1)
if(getIntent().getExtras()!=null) { //if has value pass from A
final String Amount = getIntent().getExtras().getString("result");
final String description1 = getIntent().getExtras().getString("description");
txt1.setText(description1);
txt.setText(Amount);
}
b.setOnClickListener(new View.OnClickListener() { // return to A
public void onClick(View arg0) {
Intent returnIntent = new Intent();
a = "Project";
text = txt.getText().toString(); // amount
returnIntent.putExtra("text", text);
returnIntent.putExtra("a", a);
returnIntent.putExtra("c", c); // receive from Activity C
setResult(Activity.RESULT_OK, returnIntent);
finish();
}
});
viewImage.setImageBitmap(Global.img); // receive from C
}
注意到结果
在重新presents价值3,5,而名称
重presents项目和医疗
Noted that the result
in A represents value 3,5 while name
represents project and Medical
推荐答案
以下是您要在列表视图来填充您的自定义对象
MyItem.java
public class MyItem {
private String name;
private String something;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSomething() {
return something;
}
public void setSomething(String something) {
this.something = something;
}
}
布局单项怎么会出现在的ListView
这是文件名 my_single_item.xml
以下是布局的内容
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/text_first"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="0.60"
android:gravity="center"
android:padding="4dp"
android:textColor="#000"
android:textSize="18sp" />
<TextView
android:id="@+id/text_second"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="0.60"
android:gravity="center"
android:padding="4dp"
android:textColor="#000"
android:textSize="18sp" />
</LinearLayout>
这是将通过单个项目来填充列表视图
在 MyItems
的基础列表适配器
This is the adapter which will populate the underlying list of MyItems
inside listview
by making individual item
MyAdapter.java
import java.util.ArrayList;
/**
* Created by Pankaj Nimgade on 18-11-2015.
*/
public class MyAdapter extends ArrayAdapter {
private LayoutInflater layoutInflater;
private ArrayList<MyItem> myItems;
public MyAdapter(Context context, int resource, ArrayList<MyItem> myItems) {
super(context, resource, myItems);
layoutInflater = LayoutInflater.from(context);
this.myItems = myItems;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = layoutInflater.inflate(R.layout.my_single_item, parent, false);
TextView name = (TextView) view.findViewById(R.id.text_first);
TextView something = (TextView) view.findViewById(R.id.text_second);
MyItem myItem = myItems.get(position);
name.setText("" + myItem.getName());
something.setText("" + myItem.getSomething());
return view;
}
}
写这篇code在活动
write this code in your activity
listView = (ListView) findViewById(R.id.myListView);
ArrayList<MyItem> myItems = new ArrayList<>();
for (int i = 0; i < 5; i++) {
MyItem myItem = new MyItem();
myItem.setName("Name_" + i);
myItem.setSomething("RM_" + i);
myItems.add(myItem);
}
MyAdapter myAdapter = new MyAdapter(this, android.R.layout.simple_list_item_1, myItems);
listView.setAdapter(myAdapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
MyItem myItem = (MyItem)listView.getItemAtPosition(position);
Toast.makeText(getApplicationContext(), ""+myItem.getName(), Toast.LENGTH_SHORT).show();
}
});
请确保你做这个活动的布局添加一个ListView
make sure you do add a listview in this activities layout
<ListView
android:id="@+id/myListView"
android:layout_width="match_parent"
android:layout_height="wrap_content"></ListView>
您将看到吐司将匹配的项目你现在可以点击使用该对象,并把它传递给你想要的任何活动,它会让你在
you would see the toast will match the item you would click now use this object and pass it to any activity you want and it will have the values you clicked on
这篇关于不要改变列表视图名称的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!