Java 为什么listView中的名称不断更改?
我在活动a中有一个Java 为什么listView中的名称不断更改?,java,android,listview,android-listview,Java,Android,Listview,Android Listview,我在活动a中有一个列表视图,如下所示。所有的值和名称实际上都从活动C返回到B,然后只返回到A 单击第一个列表时,它应该在editTextB上显示文本Project和值3。但它会显示实际从最后一个列表中获取的Medical 将值从3更改为43并返回A后,名称更改。我该怎么做才能使名称保持不变 活动A ArrayAdapter<String> adapter; ArrayList<String> m_listItems = new ArrayLi
列表视图
,如下所示。所有的值和名称实际上都从活动C返回到B,然后只返回到A
单击第一个列表时,它应该在editText
B上显示文本Project
和值3
。但它会显示实际从最后一个列表中获取的Medical
将值从3更改为43并返回A后,名称更改。我该怎么做才能使名称保持不变
活动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); // image
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;
注意到活动A中的
结果
表示值3,5,名称
表示项目
和医疗
。我怎样才能解决这个问题?请提供帮助。据我所知,活动A中的变量名称
包含以前的结果值(来自活动B),而不是来自您在listview上单击的行,即“Medical”您以前从活动B中获得的值,该值由变量name
持有,在listview单击事件中,您检查name
是否为“医疗”或“项目”(在本例中为“医疗”,因此医疗活动开始)
一种解决方案是从listview获取值(“项目/医疗”)
试试这个代码。
活动A
mClickedPosition = position;
String temp[] = m_listItems.get(position).split("\\s\\s+");
result = temp[temp.length - 1].trim();
result = result.replace("RM","");
name = temp[1].trim();
if (name.equals("Project")) {
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"))
{
Intent intent = new Intent(Claims1.this.getActivity(), Medical.class);
intent.putExtra("bitmap", true);
intent.putExtra("name", name);
intent.putExtra("result", result);
startActivityForResult(intent, 1);
}
据我所知,活动A中的变量
name
包含以前的结果值(来自活动B),而不是来自您在listview上单击的行,即变量name
持有的先前从活动B获得的“医疗”值,并且在listview单击事件中,您检查了name
是否正确“医疗”或“项目”(本例中为“医疗”,因此医疗活动开始)
一种解决方案是从listview获取值(“项目/医疗”)
试试这个代码。
活动A
mClickedPosition = position;
String temp[] = m_listItems.get(position).split("\\s\\s+");
result = temp[temp.length - 1].trim();
result = result.replace("RM","");
name = temp[1].trim();
if (name.equals("Project")) {
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"))
{
Intent intent = new Intent(Claims1.this.getActivity(), Medical.class);
intent.putExtra("bitmap", true);
intent.putExtra("name", name);
intent.putExtra("result", result);
startActivityForResult(intent, 1);
}
活动A中的变量
name
从何处获取其值?@FabinPaul从活动A中的A
获取B@FabinPaulProject1
和Medical
的代码是相同的,只是a
与活动a中使用的temp不同?@FabinPaul我只想得到结果
(3或5)显示在B editText上。如果我没有使用String temp[]=m\u listItems.get(position).split(\\s\\s+);
,我将获得name+““+结果
显示在editText B上活动A中的变量名称
从何处获取其值?@FabinPaul从活动A中的获取B@FabinPaulProject1
和Medical
的代码相同,只是a
与活动a中使用的temp不同?@FabinPaul我只想得到结果
(3或5)显示在B editText上。如果我没有使用String temp[]=m_listItems.get(position).split(“\\s\\s+”)代码>,我将得到name+“”+结果
显示在editText BGlad上,我可以帮忙:)兄弟,我可以再问一个问题吗?我已将图像(Global.img)从C传递到B,然后是A。但是,我不希望图像显示在listView
A。单击列表并intent
传递到B时,intent.putExtra(“位图”,true)代码>,图像仅显示在imageview
B上的编辑文本下。是否需要使用自定义listView?或者可以使用此方法?因此您希望在活动B中显示图像?@FabinPaul没问题。:)出于上述原因,请避免使用静态字段。很高兴我能帮上忙:)兄弟,我能再问一个问题吗?我已将图像(Global.img)从C传递到B,然后是A。但是,我不希望图像显示在listView
A。单击列表并intent
传递到B时,intent.putExtra(“位图”,true)代码>,图像仅显示在imageview
B上的编辑文本下。是否需要使用自定义listView?或者可以使用此方法?因此您希望在活动B中显示图像?@FabinPaul没问题。:)出于上述原因,请避免使用静态字段。