Onclicklistener在listView上提供了最佳性能和更少的内存泄漏

时间:2014-09-23 14:41:03

标签: android performance listview memory-leaks onclicklistener

我正在处理很长的列表,这些列表可以有4个以上的点击行查看。

(ListView中)

方法1:

列表视图中的

公共视图getView()

vh.pprofile.setOnClickListener(new OnClickListener(){
    @Override
    public void onClick(View v){    
        JSONObject miid;
        try {
            miid = listArray.getJSONObject(position);
            MyApp.goProfile(activity, false,  miid.getString("user_id"), 1);
            } catch (JSONException e) {     }
        }
});

方法2:

ListView公共视图中的

getView()

vh.pprofile.setTag(position);
vh.pprofile.setOnClickListener(onClickListener);

在ListView类

MyOnClickListener onClickListener = new MyOnClickListener() {
            @Override
            public void onClick(View v) {
              if (v.getId() == vh.pprofile.getId()) {
                  JSONObject miid;
                    try {
                        miid = listArray.getJSONObject(Integer.valueOf(v.getTag().toString()));
                        MyApp.goProfile(activity, false, miid.getString("user_id"), 1);
                    } catch (JSONException e) {     }
              } 
       }
};

新课程:

public class MyOnClickListener implements OnClickListener {
    @Override
    public void onClick(View v) {}
}

1 个答案:

答案 0 :(得分:1)

没有。你所比较的是没有性能差异。这两种选择都不会导致内存泄漏。只有在比较创建多个匿名单击侦听器(多次选项1)以及为不同视图重用特定单击侦听器(带有switch语句的选项2)时,才会出现性能差异。请参阅my explanation here中的详细信息。