相关疑难解决方法(0)

BaseAdapter导致ListView在滚动时出现故障

我遇到了一些我从一本书改编的BaseAdapter代码的问题.我一直在我的应用程序中使用此代码的变体,但只是在滚动一个长列表时才实现ListView中的项目变得混乱而不是所有元素都显示出来.

描述确切的行为非常困难,但很容易看出你是否采用了50个项目的排序列表并开始上下滚动.

class ContactAdapter extends BaseAdapter {

    ArrayList<Contact> mContacts;

    public ContactAdapter(ArrayList<Contact> contacts) {
        mContacts = contacts;
    }

    @Override
    public int getCount() {
        return mContacts.size();
    }

    @Override
    public Object getItem(int position) {
        return mContacts.get(position);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View view;
        if(convertView == null){
            LayoutInflater li = getLayoutInflater();
            view = li.inflate(R.layout.groups_item, null);
            TextView label = (TextView)view.findViewById(R.id.groups_item_title);
            label.setText(mContacts.get(position).getName());
            label = (TextView)view.findViewById(R.id.groups_item_subtitle);
            label.setText(mContacts.get(position).getNumber());
        }
        else
        {
            view = …
Run Code Online (Sandbox Code Playgroud)

android listview

9
推荐指数
2
解决办法
7693
查看次数

android listview滚动后显示错误数据(自定义适配器)

我有一个奇怪的问题让我发疯.在我的Android应用程序中,我定制了自己的适配器,它从ArrayAdapter扩展而来.我添加了适配器的ListView项可以标记为文本(不可编辑),可编辑文本或微调器.疯狂的东西是:当我滚动ListView时,有两个问题:

(1)微调器项目中显示的(选定)有时会发生变化,尽管我只是滚动!! 当我点击微调器时,仍会显示旧的选定值(一个,应由微调器显示)(2)滚动时ListViewItems 的顺序发生变化!

=>但是适配器中的数据不会改变(数据本身和订单都没有) - 所以它一定是View本身的问题?!也许android缓存在后台,并不会很快刷新ListViewItems或者像那样?!

有人能帮帮我吗?

多谢!

好吧,我找到了一个不太好的解决方案,但它确实有效.我只是不再使用convertView,尽管这对于内存和性能来说并不是最理想的.在我的情况下它应该没问题,因为我的ListView的最大项目数是15.这是我的Adapter-Class:

 public class FinAdapter extends ArrayAdapter<Param>{
    public Param[] params;
    private boolean merkzettel;
    protected EditText pv;

    public FinAdapter(Context context, int textViewResourceId, Param[] items, boolean merkzettel) {
        super(context, textViewResourceId, items);
        this.params = items;
        this.merkzettel = merkzettel;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        final Param p = params[position];
        if(p != null){
            if(merkzettel){
                if (convertView == null) {
                    LayoutInflater …
Run Code Online (Sandbox Code Playgroud)

android listview scroll adapter

7
推荐指数
1
解决办法
1万
查看次数

ListView的内容在滚动时加扰

所以我遇到组成我的ListView的不同部分的问题.我把它们放到一个ArrayList中并使用一个自定义的ArrayAdapter来连接我之前做过的ListView,所以我不相信那里有问题.最初,列表似乎按正确的顺序排列,但随后我将向下滚动列表,然后内容将以不正确的顺序加载.然后我向上滚动,一切都混乱.有没有人遇到过这个?

谢谢 - 杰克

android listview android-arrayadapter

3
推荐指数
1
解决办法
1558
查看次数

ListView 在滚动上显示错误的项目

我有一个用于显示名称的列表视图。如果我滚动屏幕,它会显示错误的名称。我知道这是一个常见的错误,根源于适配器的 getView 方法,但是尽管遵循了许多现有讨论中提出的方法,但仍无法解决它。

我已将我的代码粘贴在下面。如果有人能够识别该错误,那就太好了。

定制适配器

public class ListArrayAdapter extends ArrayAdapter<client> {

HashMap<String, Integer> hMap = new HashMap<String, Integer>();
private Context cntxt;
private List<client> client_list;
private int textviewres;

public ListArrayAdapter(Context context, int textViewResourceId, List<client> objects) {
    super(context,textViewResourceId,objects);
    this.cntxt = context;
    this.textviewres = textViewResourceId;
    this.client_list = objects;

    for(int j=0; j<client_list.size(); j++){

        Log.d("ListArrayAdapter", "Position No" +j +": " +client_list.get(j).getName());
        Log.d("ListArrayAdapter", "Total elements in the client list is  "+client_list.size());

    }
}


@Override
public long getItemId(int position) {
    client item = getItem(position);
    return item.getID();
} …
Run Code Online (Sandbox Code Playgroud)

android listview android-arrayadapter

3
推荐指数
1
解决办法
5555
查看次数