Android 列表视图数据始终覆盖在第一个列表项中

Android 列表视图数据始终覆盖在第一个列表项中,android,Android,我正在开发一个简单的列表视图,每个列表项中都有一个图像、文本和图像 但数据始终仅在第一个列表项中被覆盖 这是我的密码 protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); listview = (ListView) findViewById(R.id.apps_list)

我正在开发一个简单的列表视图,每个列表项中都有一个图像、文本和图像

但数据始终仅在第一个列表项中被覆盖

这是我的密码

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    listview = (ListView) findViewById(R.id.apps_list);
    am = (ActivityManager) this.getSystemService(this.ACTIVITY_SERVICE);
    lv = am.getRunningTasks(Integer.MAX_VALUE);
// Actually this should be in timer
new RetriveStock().execute();
}
//异步任务

public class RetriveStock extends AsyncTask<Void, Void, Void> {

    @Override
    protected Void doInBackground(Void... params) {
        updateList();
        return null;
    }

    @Override
    protected void onCancelled() {
        super.onCancelled();
    }

    @Override
    protected void onPostExecute(Void result) {
        runOnUiThread(new Runnable() {

            @Override
            public void run() {
                listview.invalidateViews();
                listview.setAdapter(adb);
                adb.notifyDataSetChanged();
                listview.requestLayout();
            }
        });

        super.onPostExecute(result);
    }

    @Override
    protected void onPreExecute() {
        super.onPreExecute();
    }

    @Override
    protected void onProgressUpdate(Void... values) {
        super.onProgressUpdate(values);
    }

}

public void updateList() {
    adb = new ArrayAdapter<RunningTaskInfo>(MainActivity.this,
            R.layout.app_list, lv) {

        @Override
        public View getView(final int position, View convertView,
                ViewGroup parent) {
            View view = convertView;
            try {
                if (null == view) {
                    LayoutInflater vi = (LayoutInflater) MainActivity.this
                            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                    view = vi.inflate(R.layout.app_list, null);
                }
                TextView appName = (TextView) findViewById(R.id.appName);
                ImageView icon = (ImageView) findViewById(R.id.icon);
                ImageButton close = (ImageButton) findViewById(R.id.close);
                RunningTaskInfo app = lv.get(position);
                ApplicationInfo ai = new ApplicationInfo();
                PackageManager pm = getApplicationContext()
                        .getPackageManager();
                try {
                    ai = pm.getApplicationInfo(
                            app.baseActivity.getPackageName(), 0);
                } catch (NameNotFoundException e) {
                    e.printStackTrace();
                }
                final String applicationName = (String) (ai != null ? pm
                        .getApplicationLabel(ai) : "(unknown)");
                appName.setText(applicationName);
                icon.setImageDrawable(pm.getApplicationIcon(ai));


            } catch (Exception e) {
                e.printStackTrace();
            }
            return view;

        }

    };
}
public类RetriveStock扩展异步任务{
@凌驾
受保护的Void doInBackground(Void…参数){
updateList();
返回null;
}
@凌驾
受保护的void onCancelled(){
super.onCancelled();
}
@凌驾
受保护的void onPostExecute(void结果){
runOnUiThread(新的Runnable(){
@凌驾
公开募捐{
listview.invalidateViews();
setAdapter(adb);
adb.notifyDataSetChanged();
requestLayout();
}
});
super.onPostExecute(结果);
}
@凌驾
受保护的void onPreExecute(){
super.onPreExecute();
}
@凌驾
受保护的void onProgressUpdate(void…值){
super.onProgressUpdate(值);
}
}
公共void updateList(){
adb=新阵列适配器(MainActivity.this,
R.layout.app_列表,lv){
@凌驾
公共视图getView(最终整型位置,视图转换视图,
视图组(父级){
视图=转换视图;
试一试{
if(null==视图){
LayoutFlater vi=(LayoutFlater)MainActivity.this
.getSystemService(上下文布局\充气机\服务);
视图=vi.充气(R.layout.app_列表,空);
}
TextView appName=(TextView)findViewById(R.id.appName);
ImageView图标=(ImageView)findViewById(R.id.icon);
ImageButton close=(ImageButton)findViewById(R.id.close);
RunningTaskInfo应用程序=lv.get(位置);
ApplicationInfo ai=新的ApplicationInfo();
PackageManager pm=getApplicationContext()
.getPackageManager();
试一试{
ai=pm.getApplicationInfo(
app.baseActivity.getPackageName(),0);
}catch(nameNotFounde异常){
e、 printStackTrace();
}
最终字符串applicationName=(字符串)(ai!=null?pm
.getApplicationLabel(ai):“(未知)”;
appName.setText(applicationName);
icon.setImageDrawable(pm.getApplicationCon(ai));
}捕获(例外e){
e、 printStackTrace();
}
返回视图;
}
};
}
//屏幕截图如下。请帮忙

更改此选项:

TextView appName = (TextView) findViewById(R.id.appName); 


适用于所有其他适配器。

您正在使用哪个适配器???你能发布它的代码吗?我正在使用数组适配器。请参阅updateList()。其他重写方法(如getItem、getCount等)在哪里?数组适配器的意思是,u hv到数据数组到适配器到表单列表。它将基于getCount方法运行。。
TextView appName = (TextView)view. findViewById(R.id.appName);