2 wuhudamahua wuhudamahua 于 2016.04.21 17:10 提问

Android的listview问题

package com.example.listview;

import android.app.Activity;
import android.content.Context;
import android.database.DataSetObserver;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.TextView;

public class MainActivity extends Activity {

private Context mContext;
private TextView textview;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    //1找到listview
    ListView listview=(ListView)findViewById(R.id.listview);
    //2创建一个adapter对象,以为下面已经申明了一个类
    mylistadpater mylistadpater1=new mylistadpater();
    //3将adapter设置个listview
    listview.setAdapter(mylistadpater1);

}

class mylistadpater extends BaseAdapter{//default base simple

@Override
public int getCount() {
    // TODO Auto-generated method stub
    //集合里面又多少条目,告诉listview要显示多少条目
    return 10;
}

//根据position获取listview上面的bean书局,该方法不影响数据的展示,可以先不实现
@Override
public Object getItem(int position) {
    // TODO Auto-generated method stub
    return null;
}

@Override
public long getItemId(int position) {
    // TODO Auto-generated method stub
    return 0;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    textview=(TextView)findViewById(R.id.TextView);
    textview.setText("position:"+position);
    return textview;

}

}
}
不报错,但是安装到虚拟机上面就立刻崩溃

10个回答

qq_21267961
qq_21267961   2016.04.21 17:44
已采纳

你这个适配器写的,你那个getView()返回的是一个item项,你这个返回一个textview是个什么鬼。因为写convertview =LayoutInflater.from(MainActivity.this).inflate(R.layout.list_item, null); tv = (TextView) convertView.findViewById(R.id.tv);。。。。。。 return convertView;

bdmh
bdmh   Ds   Rxr 2016.04.21 17:17

奔溃,你先看看logcat的日志,里面会有显示的,根据具体错误找问题

wuhudamahua
wuhudamahua 显示58行有问题,也就是这一句textview=(TextView)findViewById(R.id.TextView); 但是我实在是找不到问题
一年多之前 回复
CSDNXIAOC
CSDNXIAOC   2016.04.21 17:22

原创教程,转载请保留出处:http://www.eoeandroid.com/thread-72369-1-1.html

最近有需求需要在listView中载入不同的listItem布局,开始没有使用convertView,加载了多个item后导致了内存泄露,所以回来研究convertView在多个listItem布局时的缓存及应用,并且和大家分享

构造Ad......
答案就在这里:Android:关于ListView的内存泄漏问题
----------------------你好,人类,我是来自CSDN星球的问答机器人小C,以上是依据我对问题的理解给出的答案,如果解决了你的问题,望采纳。

hyl910819
hyl910819   2016.04.21 18:07

getView( )方法中 写的有问题,
一般需要引入一个listv的布局item
View view=View..inflate(this,R.layout.list_item, null);
textview=view.findViewById(R.id.TextView);
然后在设置值;

Hebin320320
Hebin320320   2016.04.21 18:20

图片说明

给你参考一下

ss1168805219
ss1168805219   2016.04.22 08:56

把布局贴出来,是不是item布局错了

u013147734
u013147734 你看看他有用到item布局吗?
一年多之前 回复
pengguichu
pengguichu   2016.04.22 14:52

你的适配器中都没有应用你的布局,convertview =LayoutInflater.from(MainActivity.this).inflate(R.layout.list_item, null); tv = (TextView) convertView.findViewById(R.id.tv);。。。。。。 return convertView;

u010047390
u010047390   2016.05.23 21:14

getView中 需要用convertview 这个参数去convertview.findbyId().找到对应的id

qq_27578023
qq_27578023   2016.06.05 22:27

你这个适配器写的,你那个getView()返回的是一个item项,你这个返回一个textview是个什么鬼。因为写convertview =LayoutInflater.from(MainActivity.this).inflate(R.layout.list_item, null); tv = (TextView) convertView.findViewById(R.id.tv);。。。。。。 return convertView;

smile_jml
smile_jml   2016.07.25 18:51

适配器的getObject方法返回值别写空

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!