在对象内获取并设置ArrayList <string>以填充Spinner </string>

时间:2014-01-08 19:00:44

标签: java android arraylist android-spinner

如果我有一个我想设置ArrayList的对象,那么语法是什么?这是一个带有getter和setter的示例Object(在本例中已删除Some_obj中的多个其他字符串和整数):

public class Some_obj {

    protected ArrayList<String> spinnerList = new ArrayList<String>();

    public ArrayList<String> getList() { return spinnerList; }
    public void setList(ArrayList<String> spinnerList) { this.spinnerList = spinnerList; }

    public Some_obj(ArrayList<String> _sl) { spinnerList = _sl; }
}

如何在对象中声明它,因为当前代码基本上是在需要为微调器设置适配器时设置新列表。我是否需要声明这样的列表?

protected ArrayList<String> spinnerList;

所以我可以做这样的事情吗?

Some_obj obj = listViewCells.get(selectedPosition); 
obj.setList(listFromActivity);

我现在能够使用listFromActivity成功填充微调器,但是我觉得在不久的将来将listFromActivity存储在Some_obj中是有益的......我似乎无法弄清楚如何在里面设置一个ArrayList Some_obj如果它首先在Some_obj中设置为null。

1 个答案:

答案 0 :(得分:0)

希望这可以帮助其他人,即使我正确地设置了列表。我需要覆盖弹出选择的自然微调器触摸,因此我在适配器中使用了spinnerOnTouch侦听器,其中“holder”是保存单元格内容的类。所以我在适配器的getView()中设置了监听器,如:

<强> holder.spinner.setOnTouchListener(spinnerOnTouch);

在没有详细介绍我在过去一小时内修复的内容的情况下,这里的工作代码正在为已填充其选择的微调器提取正确的obj.list:

private View.OnTouchListener spinnerOnTouch = new View.OnTouchListener() {
    public boolean onTouch(View v, MotionEvent event) {
        selectedPosition = Integer.parseInt(v.getTag().toString());
        Some_obj obj = cells.get(selectedPosition);
        if (event.getAction() == MotionEvent.ACTION_UP) {
            adapter = null;
            if(obj.list == null) {
                adapter = new ArrayAdapter<String>(mContext, R.layout.spinner_cell, listFromActivity);
                spinner = (Spinner)v.findViewById(R.id.spinner);
                spinner.setAdapter(adapter);
                new GetSelectionsTask().execute();
            }
            else
            {
                adapter = new ArrayAdapter<String>(mContext, R.layout.spinner_cell, obj.list);
                spinner = (Spinner)v.findViewById(R.id.spinner);
                spinner.setAdapter(adapter);
            }
        }
        return false;
    }
};

长话短说,你应该避免尝试在ListViews中添加微调器,因为你必须做很多工作来保持你在适配器的getView()中的位置,微调器的选择,以及更新与之相关的对象。每个列表......更不用说微调器出现时的条件了,因为无论你使用什么单元格,getView()方法都会将它的位置改为0。