Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么listView中的名称不断更改?_Java_Android_Listview_Android Listview - Fatal编程技术网

Java 为什么listView中的名称不断更改?

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

我在活动a中有一个
列表视图
,如下所示。所有的值和名称实际上都从活动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@FabinPaul
Project1
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@FabinPaul
Project1
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没问题。:)出于上述原因,请避免使用静态字段。