简体   繁体   English

不要在listView上更改名称

[英]Don't change the name on the listView

I have a listView in Activity A as shown below. 我在活动A中有一个listView ,如下所示。 All the values and name were actually returned from Activity C to B then only A. 实际上,所有值和名称都从活动C返回到B,然后才返回到A。

在此处输入图片说明

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. 单击第一个列表时,它应该在editText B上显示文本Project和值3但是,它显示的是从最后一个列表实际获取的Medical

在此处输入图片说明

After I change the value from 3 to 43 and return to A, the name changed. 在将值从3更改为43并返回到A后,名称更改了。 What should I do so that the name will remain the same ? 我应该怎么做才能使名称保持不变?

在此处输入图片说明

Activity 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);
                    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;

Activity B (Project1) 活动B (项目1)

   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
                  }

Noted that the result in A represents value 3,5 while name represents project and Medical 请注意,A中的result表示值3,5,而name表示项目和Medical

following is your custom object which you want to populate in listview 以下是您要在listview填充的自定义对象

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;
    }
}

layout for individual item how it would appear in ListView this is the file name my_single_item.xml below is the content for the layout 单个项目的布局,它在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>

This is the adapter which will populate the underlying list of MyItems inside listview by making individual item 这是适配器,它将通过制作单个项目来填充listviewMyItems的基础列表

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;
    }
}

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();
    }
});

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 您会看到烤面包将与您单击的项目匹配,现在使用此对象并将其传递给您想要的任何活动,它将具有您单击的值

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM