复制的代码出错

时间:2016-06-03 10:24:22

标签: java android

我正在查看有关listviewsbuttons的文章。现在我复制了他写的代码。但不幸的是我得到了一个错误。

我有activity_mainChild_listviewListAdapter.javaMainActivity.java. 在最后一个我收到错误。我把错误放在粗体字中。

错误1说:ListAdapter is abstract;无法实例化

错误2说:无法解决方法。我猜这是因为它正在寻找错误的javafile中的方法。它正在MainAcitivity而不是ListAdapter中寻找它。

private ListView listView;
ListAdapter adapter;
ArrayList<String> dataItems = new ArrayList<String>();

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    String[] dataArray = getResources().getStringArray(R.array.listdata);
    List<String> dataTemp = Arrays.asList(dataArray);
    dataItems.addAll(dataTemp);
    listView = (ListView) findViewById(R.id.listView);
    adapter = **new ListAdapter(MainActivity.this, dataItems)**;
    adapter.**setCustomButtonListner**(MainActivity.this);
    listView.setAdapter(adapter);

1 个答案:

答案 0 :(得分:1)

如果你继续滚动这篇文章,你会发现他创建了这个ListAdapter(这是一个自定义适配器的可怕名称)

这是他班级的代码

package com.example.articalonlistiner;   

import java.util.ArrayList;   

import android.content.Context;   
import android.view.LayoutInflater;   
import android.view.View;   
import android.view.View.OnClickListener;   
import android.view.ViewGroup;   
import android.widget.ArrayAdapter;   
import android.widget.Button;   
import android.widget.TextView;   

public class ListAdapter extends ArrayAdapter<String> {   
    customButtonListener customListner;   

    public interface customButtonListener {   
        public void onButtonClickListner(int position,String value);   
    }   

    public void setCustomButtonListner(customButtonListener listener) {   
        this.customListner = listener;   
    }   

    private Context context;   
    private ArrayList<String> data = new ArrayList<String>();   

    public ListAdapter(Context context, ArrayList<String> dataItem) {   
        super(context, R.layout.child_listview, dataItem);   
        this.data = dataItem;   
        this.context = context;   
    }   

    @Override   
    public View getView(final int position, View convertView, ViewGroup parent) {   
        ViewHolder viewHolder;   
        if (convertView == null) {   
            LayoutInflater inflater = LayoutInflater.from(context);   
            convertView = inflater.inflate(R.layout.child_listview, null);   
            viewHolder = new ViewHolder();   
            viewHolder.text = (TextView) convertView   
                    .findViewById(R.id.childTextView);   
            viewHolder.button = (Button) convertView   
                    .findViewById(R.id.childButton);   
            convertView.setTag(viewHolder);   
        } else {   
            viewHolder = (ViewHolder) convertView.getTag();   
        }   
        final String temp = getItem(position);   
        viewHolder.text.setText(temp);   
        viewHolder.button.setOnClickListener(new OnClickListener() {   

            @Override   
            public void onClick(View v) {   
                if (customListner != null) {   
                    customListner.onButtonClickListner(position,temp);   
                }   

            }   
        });   

        return convertView;   
    }   

    public class ViewHolder {   
        TextView text;   
        Button button;   
    }   
}  

这显然是你缺乏关注的。您无法复制一段代码,并希望如果您不读取所有内容,它将会有效。

编辑(来自以下评论):

使用正确的ListAdapter使sur更重要。您需要导入自定义ListAdapter而不是Android小部件包中的自定义{。}。