不要改变列表视图名称 [英] Don't change the name on the listView

查看:189
本文介绍了不要改变列表视图名称的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个的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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆