3

Chris Banes の PullToRefresh ライブラリを使用すると、カスタム アダプタの getView() メソッドが呼び出されません。このコードは、彼のライブラリを使用せずに正常に動作し、getView() が呼び出されます。私はこれを数日間調べてきましたが、何が問題なのかわかりません。どんなフィードバックでも大歓迎です!

MyActivity.java

MyAdapter adapter = new MyAdapter(this, data);
// the following toast displays the correct count
Toast.makeText("MyActivity", adapter.getCount(), Toast.LENGTH_SHORT).show(); 
myListView.setAdapter(adapter);

MyAdapter.java

public class MyAdapter extends ArrayAdapter<Object> {

    private ArrayList<Object> data;
    private LayoutInflater vi;
    private Context context;

    public MyAdapter(Context context, ArrayList<Object> data) {
        super(context, 0);
        this.context = context;
        this.data = data;
        this.vi = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }

    static class ViewHolder {
        ...
    }

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

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

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

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        // not getting called
        ...
    }
}
4

2 に答える 2

9

Google IO 2013 では、結果を最適化するために ListView に多くの変更が加えられました。私はあなたと同様の問題を抱えていました.カスタムアダプタの getView() 関数が呼び出されませんでした.

新しい変更によると、ビューの layout_height として「wrap_content」を使用している場合、getView() はユーザーがリストをスクロールしたときにのみ呼び出されます。代わりに、ビューの layout_height として「fill_parent」を使用してください。それはあなたの問題を解決します。

使用する、

android:layout_height="fill_parent"

使用する代わりに

android:layout_height="wrap_content"
于 2014-01-03T02:13:41.857 に答える
0

@RTL

あなたの答えは正しくありません。試してみましたが失敗しました。後で私は正しい解決策を見つけます。

getCount()がありませんでした

したがって、追加する必要があります

@Override
public int getCount() {
    return yourArr.length;
}
于 2015-10-04T06:07:30.217 に答える