【问题标题】:How to get string from arraylist如何从arraylist中获取字符串
【发布时间】:2017-04-03 07:03:33
【问题描述】:

我在从 ArrayList 获取值时遇到问题。我能做的就是获得如下价值:[Ljava.lang.string @....

你能帮帮我吗?我不知道mProductList.get(???) 应该是什么。我想从点击的项目中分离出值。

public class Activity1 extends Activity {
private ListView lvProduct;
private ProductListAdapter adapter;
private List<Product> mProductList;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity1);

    lvProduct = (ListView)findViewById(R.id.listView1);

    mProductList = new ArrayList<>();
    mProductList.add(new Product(1, "Product_1", "Price", "Description"));
    mProductList.add(new Product(2, "Product_2", "Price", "Description"));
    mProductList.add(new Product(3, "Product_3", "Price", "Description"));

    adapter = new ProductListAdapter(getApplicationContext(), mProductList);
    lvProduct.setAdapter(adapter);

    lvProduct.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            Intent newActivity = new Intent(getApplicationContext(), BrowseProduct.class);
            newActivity.putExtra("1st column value", mProductList.get(???));
            newActivity.putExtra("2nd column value", mProductList.get(???));
            newActivity.putExtra("3rd column value", mProductList.get(???));
            newActivity.putExtra("4th column value", mProductList.get(???));
            startActivity(newActivity);
        }
    });
}

}

【问题讨论】:

  • 显示你的Product
  • 获取您的 Product 模型类中必须有 getter 的值
  • 请准确告诉我们您的问题是什么;那个字符串[Ljava.lang.string @.... 看起来很像你在一个 array 上调用 toString ...所以退后一步;并创建一个真正的minimal reproducible example

标签: java android arraylist


【解决方案1】:

您应该在您的 Product 类中声明 Get 和 Set 方法

 nowyEkran.putExtra("1st column value", mProductList.get(position).getProduct());

示例

        /**
         * Created by Intellij Amiyo  on 03-04-2017.
         */

        public class Product implements Serializable {

        public String product,price,description;
        int id;

        // Empty constructor
        public Product()
        {

        }

        // constructor
        public Product( int id,String product,String price,String description) {

            this.price = price;
            this.product = product;
            this.description = description;
            this.id=id;

        }

          public String getprice() {
            return this.price;
        }

        public void setprice(String price) {
            this.price = price;
        }
         public String getProduct() {
            return this.product;
        }

        public void setProduct(String product) {
            this.product = product;
        }
         public String getDescription() {
            return this.description;
        }

        public void setDescription(String product) {
            this.description = description;
        }

        public int getID() {
            return this.id;
        }

        public void setID(int id) {
            this.id = id;
        }

}

【讨论】:

  • getFirstColumn 必须在 Product 模型类中编写此 getter 后才能工作
  • @AwaisMajeed 我知道。它是一个例子
【解决方案2】:

您需要先获取位置参考,然后从 ArrayList 中获取该位置的值

mProductList.get(position).getProductName();

编码愉快!

【讨论】:

  • 很高兴它有帮助!
【解决方案3】:

试试这个

mProductList.get(position).getMethod()

【讨论】:

    【解决方案4】:

    这将获得数组列表的索引 0 1 2,它将返回对象

    mProductList.get(0);
    mProductList.get(1);
    mProductList.get(2);
    

    【讨论】:

    • 我不确定是否有人真正理解这个问题。我们在 10 分钟内看到 8 个低质量答案的事实很好地表明问题本身是低质量的;并且只能作为垃圾磁铁。很抱歉措辞严厉;但这正是这里发生的事情。
    【解决方案5】:

    将位置放在大括号 () 中。如下...

    lvProduct.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                Intent newActivity = new Intent(getApplicationContext(), BrowseProduct.class);
                newActivity.putExtra("1st column value", mProductList.get(position));
                newActivity.putExtra("2nd column value", mProductList.get(position));
                newActivity.putExtra("3rd column value", mProductList.get(position));
                newActivity.putExtra("4th column value", mProductList.get(position));
                startActivity(newActivity);
            }
        });
    

    希望对你有帮助...(:

    【讨论】:

      【解决方案6】:
      @Override
              public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
      
              }
      

      可以从回调方法的int position参数中获取被点击的item位置

      【讨论】:

        【解决方案7】:

        您已经有一个名为position 的参数。这将是get 的参数。但是,这将 return 一个 Product 对象,您将需要从那里读取给定的成员。由于您没有与我们分享Productclass的代码,我们只能猜测:

            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                Intent newActivity = new Intent(getApplicationContext(), BrowseProduct.class);
                newActivity.putExtra("1st column value", mProductList.get(position).ID);
                newActivity.putExtra("2nd column value", mProductList.get(position).Name);
                newActivity.putExtra("3rd column value", mProductList.get(position).Price);
                newActivity.putExtra("4th column value", mProductList.get(position).Description);
                startActivity(newActivity);
            }
        

        【讨论】:

        • 除非 ID、名称、价格和描述的访问说明符不是私有的
        • @AwaisMajeed 没错。这就是为什么我在对 Product 类缺乏了解的情况下写下我们只能猜测的原因。
        【解决方案8】:
        mProductList.get(position).price
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-11-29
          • 1970-01-01
          • 2012-04-04
          • 1970-01-01
          • 1970-01-01
          • 2013-10-25
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多