我正在查看有关listviews
和buttons
的文章。现在我复制了他写的代码。但不幸的是我得到了一个错误。
我有activity_main
,Child_listview
,ListAdapter.java
和MainActivity.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);
答案 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小部件包中的自定义{。}。