List.setAdapter(thadapter);总是不工作+屏幕错误

时间:2016-11-05 12:51:19

标签: java android listview

您好,我有一个问题列表视图。

我将列表视图用于列表中的显示项目。

我的活动在哪里是Listview。如果我在listview中打开行打开弹出窗口(对话框),我可以在其中编辑单词。

如果编辑完成,请拨打此

    AddItemInPacage.obnovitem=true;
    AddItemInPacage.indexitem=poz;
    AddItemInPacage.novyitem=novypacage;

布尔值用于Timer如果为true启动此方法

public void ZmenItem(int indexzmeny,String nove) {

    ListAdapter.clear();

    for (int i=1;i<prvy.getPacageItem2(indexpacage)+1;i++) {

        ListAdapter.add(String.valueOf(prvy.citajItem(indexpacage,i)));
    }

    ListAdapter.set(indexzmeny,nove);


    Toast.makeText(this, "citam "+ ListAdapter.get(indexzmeny), Toast.LENGTH_SHORT).show();

    thadapter = new MyThumbnailAdapter(getApplication(), R.layout.list_row, ListAdapter);

    List.setAdapter(thadapter);
    thadapter.notifyDataSetChanged();
}

当我没有打开同一行时,一切都很好。如果在行中编辑行一段时间程序不能正常工作。

这一行List.setAdapter(thadapter);此行之后变量也很好,但显示中的listview不会重写。 为什么?

我有三次这个List.setAdapter(thadapter);在程序上,但在OnCreate方法和什么时候把新行放在listview ...所以当编辑行我只调用thise方法↑↑有时重写好,有时不。

因为Thise程序不是100%好:(

ListView List;
    MyThumbnailAdapter thadapter = null;
    ArrayList<String> ListAdapter = new ArrayList<String>();

这是我的适配器

public class MyThumbnailAdapter extends ArrayAdapter<String> {

    ArrayList<String> arr;
    private TextView text;

    public MyThumbnailAdapter(Context context, int textViewResourceId, ArrayList<String> objects) {

        super(context, textViewResourceId, objects);
        this.arr = objects;
    }

    @Override
    public View getView(final int position, View convertView, ViewGroup parent) {

        View view = null;
        LayoutInflater inflater = getLayoutInflater();
        view = inflater.inflate(R.layout.list_row, parent, false);
        TextView textnumber = (TextView) view.findViewById(R.id.text);
        ImageView delButton = (ImageView) view.findViewById(R.id.btn_del);

      Typeface  robtoLight = Typeface.createFromAsset(getContext().getAssets(), "fonts/Roboto-Light.ttf");
        textnumber.setTypeface(robtoLight);

        delButton.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                arr.remove(position);
                thadapter.notifyDataSetChanged();
                Toast.makeText(getContext(), "Item deleted", Toast.LENGTH_SHORT).show();
            }
        });

        textnumber.setText(arr.get(position));


        textnumber.setOnLongClickListener(new View.OnLongClickListener() {

            @Override
            public boolean onLongClick(View v) {

                for (int i=ListAdapter.size()-1;i>=0;i--) {
                    //      for (int i = 0; i < ListAdapter.size() ; i++) {
                    try {
                        prvy.pridajItemRemove(ListAdapter.get(i), indexpacage, i+1);
                    } catch(IndexOutOfBoundsException e) {
                        prvy.Nulak(indexpacage,i);
                    }
                }

                prvy.setPacageItem2(ListAdapter.size(),indexpacage);
                prvy.setPocItem(ListAdapter.size());

                for (int i=ListAdapter.size();i<99;i++) {
                    prvy.Nulak(indexpacage,i+1);
                }

                Serializuj(prvy,nazovtripu);


                EditItemDialog cdd=new EditItemDialog(AddItemInPacage.this,nazovtripu,position,indexpacage);
                cdd.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
                cdd.show();


                return true;
            }

        });
        return view;
    }
}

我把照片

RealTime Linux

有时如果我编辑行Toas读取好的字符串,但Listview没有重写。

2 个答案:

答案 0 :(得分:0)

这可能对您有所帮助

  

ListAdapter.notifyDataSetChanged()

希望ListAdapter是适配器的名称

答案 1 :(得分:0)

我需要使用medhod在Dialog中进行同步确认编辑,重写Listview。

或从

切换序列
AddItemInPacage.obnovitem=true;
    AddItemInPacage.indexitem=poz;
    AddItemInPacage.novyitem=novypacage;

    AddItemInPacage.indexitem=poz;
    AddItemInPacage.novyitem=novypacage;

    AddItemInPacage.obnovitem=true;

因为如果AddItemInPacage.obnovitem = true; first Activity使用变量novypacage中的旧信息。当变量novypacage从对话框中填满时。 Listview使用此变量中的旧信息完成工作。