当前位置: 代码迷 >> Android >> 自定义adapter,为啥应用直接崩溃呢
  详细解决方案

自定义adapter,为啥应用直接崩溃呢

热度:99   发布时间:2016-04-28 04:26:54.0
自定义adapter,为何应用直接崩溃呢
本帖最后由 baseshow 于 2014-08-01 15:39:47 编辑
刚学android开发几个,很多东西不明白,在一个个控件学习中。

各位大大,标红的那里的问题,该咋写好呢


package com.example.testapp;

import java.util.ArrayList;
import java.util.List;

import android.app.Activity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.TextView;

public class MainActivity extends Activity {

private ListView lv;
private Myadapter adapter;

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

lv = (ListView) this.findViewById(R.id.listView1);
adapter = new Myadapter(this.getData());
lv.setAdapter(adapter);
}

public List<String> getData(){

List<String> list = new ArrayList<String>();
for(int i=0;i<=100;i++){
list.add("testitem - "+i);
}
return list;
}

public class Myadapter extends BaseAdapter{

private List<String> list;

public Myadapter(List<String> list){
this.list = list;
}

@Override
public int getCount() {
// TODO 自动生成的方法存根
return list.size();
}

@Override
public Object getItem(int position) {
// TODO 自动生成的方法存根
return list.get(position);
}

@Override
public long getItemId(int position) {
// TODO 自动生成的方法存根
return position;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO 自动生成的方法存根
View view = LayoutInflater.from(MainActivity.this).inflate(R.layout.listview_item1,null);
TextView tv = (TextView)view.findViewById(R.id.textView1);
tv.setText(list.get(position));
return tv;
}

}


}


定义了一个布局文件

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="${relativePackage}.${activityClass}" >

    <TextView
        android:id="@+id/TextView1"
        android:layout_width="match_parent"
        android:layout_height="30dp"
        android:textColor="#FF8000"
        android:textSize="20sp"
        />

</LinearLayout>
------解决方案--------------------
贴log ,看具体是什么错误吧
------解决方案--------------------
findViewById(R.id.textView1);

你这里是textView1
而你的布局文件里面是TextView1
------解决方案--------------------
在getView方法中要判断convertView等于null才执行View view = LayoutInflater.from(MainActivity.this).inflate(R.layout.listview_item1,null);
------解决方案--------------------
引用:
Quote: 引用:

贴log ,看具体是什么错误吧



08-01 08:37:32.252: D/AndroidRuntime(7270): >>>>>> AndroidRuntime START com.android.internal.os.RuntimeInit <<<<<<
08-01 08:37:32.252: D/AndroidRuntime(7270): CheckJNI is ON
08-01 08:37:32.312: D/dalvikvm(7270): Trying to load lib libjavacore.so 0x0
08-01 08:37:32.322: D/dalvikvm(7270): Added shared lib libjavacore.so 0x0
08-01 08:37:32.352: D/dalvikvm(7270): Trying to load lib libnativehelper.so 0x0
08-01 08:37:32.352: D/dalvikvm(7270): Added shared lib libnativehelper.so 0x0
08-01 08:37:33.081: D/AndroidRuntime(7270): Calling main entry com.android.commands.pm.Pm
08-01 08:37:33.111: D/AndroidRuntime(7270): Shutting down VM
08-01 08:37:33.131: D/dalvikvm(7270): GC_CONCURRENT freed 94K, 18% free 469K/568K, paused 1ms+1ms, total 10ms
08-01 08:37:33.131: D/dalvikvm(7270): Debugger has detached; object registry had 1 entries
08-01 08:37:33.642: D/AndroidRuntime(7282): >>>>>> AndroidRuntime START com.android.internal.os.RuntimeInit <<<<<<
08-01 08:37:33.642: D/AndroidRuntime(7282): CheckJNI is ON
08-01 08:37:33.682: D/dalvikvm(7282): Trying to load lib libjavacore.so 0x0
  相关解决方案