Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/206.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 复制的代码中存在错误_Java_Android - Fatal编程技术网

Java 复制的代码中存在错误

Java 复制的代码中存在错误,java,android,Java,Android,我正在看一篇关于列表视图和按钮的文章。现在我复制了他写的代码。但不幸的是,我犯了一个错误 我有一个activity\u main,Child\u listview,ListAdapter.java和MainActivity.java. 在最后一篇文章中,我发现了一个错误。我把错误用粗体字写了出来 错误1说:ListAdapter是抽象的;无法实例化 错误2表示:无法解析方法。我猜这是因为它在错误的javafile中寻找方法。它正在MainActivity中查找它,而不是ListAdapter p

我正在看一篇关于
列表视图
按钮
的文章。现在我复制了他写的代码。但不幸的是,我犯了一个错误

我有一个
activity\u main
Child\u listview
ListAdapter.java
MainActivity.java.
在最后一篇文章中,我发现了一个错误。我把错误用粗体字写了出来

错误1说:
ListAdapter是抽象的
;无法实例化

错误2表示:无法解析方法。我猜这是因为它在错误的javafile中寻找方法。它正在
MainActivity
中查找它,而不是
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);
私有ListView ListView;
列表适配器;
ArrayList dataItems=新的ArrayList();
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String[]dataArray=getResources().getStringArray(R.array.listdata);
List dataTemp=Arrays.asList(dataArray);
dataItems.addAll(dataTemp);
listView=(listView)findViewById(R.id.listView);
适配器=**新的ListAdapter(MainActivity.this,dataItems)**;
适配器。**setCustomButtonListner**(MainActivity.this);
setAdapter(适配器);

如果你继续浏览这篇文章,你会发现他创建了这个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;   
    }   
}  
package com.example.articalonlistiner;
导入java.util.ArrayList;
导入android.content.Context;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.view.OnClickListener;
导入android.view.ViewGroup;
导入android.widget.ArrayAdapter;
导入android.widget.Button;
导入android.widget.TextView;
公共类ListAdapter扩展了ArrayAdapter{
customButtonListener CustomListener;
公共接口customButtonListener{
公共void onButtonClickListner(int位置,字符串值);
}   
public void setCustomButtonListner(customButtonListener侦听器){
this.customListner=侦听器;
}   
私人语境;
private ArrayList data=new ArrayList();
公共ListAdapter(上下文上下文,ArrayList数据项){
super(context,R.layout.child_listview,dataItem);
this.data=数据项;
this.context=上下文;
}   
@凌驾
公共视图getView(最终int位置、视图转换视图、视图组父级){
持票人持票人;
如果(convertView==null){
LayoutFlater充气机=LayoutFlater.from(上下文);
convertView=充气机。充气(R.layout.child_listview,null);
viewHolder=新的viewHolder();
viewHolder.text=(TextView)convertView
.findViewById(R.id.childTextView);
viewHolder.button=(按钮)convertView
.findViewById(R.id.childButton);
convertView.setTag(viewHolder);
}否则{
viewHolder=(viewHolder)convertView.getTag();
}   
最终字符串温度=getItem(位置);
viewHolder.text.setText(临时);
viewHolder.button.setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图v){
如果(customListner!=null){
customListner.onButtonClickListner(位置、温度);
}   
}   
});   
返回视图;
}   
公共类视图持有者{
文本查看文本;
按钮;
}   
}  
这显然是你的疏忽。你不能复制一段代码,如果你不阅读所有内容,就希望它能工作

编辑(来自以下评论):


这对于确保您使用正确的ListAdapter也是很重要的。您需要导入自定义的ListAdapter,而不是Android小部件包中的ListAdapter。

您能给我们提供源代码的链接吗?您应该放日志,而不是仅仅告诉错误保持阅读……他创建了ListAdapter!!!@Nomad,有no Logcat,因为他没有编译is程序,这清楚地表明您没有阅读我在代码上面的注释。我已经写过,我有ListAdapter.java,但仍然有错误。我非常感谢您的输入。由于ListAdapter显然不是抽象的,这不是同一个文件,或者您只是导入了ListAdandroid.widget.ListAdapter中的apter接口。删除ListAdapter导入以使用正确的ListAdapter(定制)。如果与活动不同,请指定程序包。编辑:是的,我确实读了你的问题,但文件名没有告诉我内容。哈哈,我现在明白了。我真的很感谢你的帮助。我刚刚开始学习java和android,所以我还有很长的路要走。我删除了它,现在它确实可以工作了。非常感谢你。真的吗不用担心Android,这基本上是一个很大的库,如果你懂Java,你就会懂Android。如果你愿意接受这个答案,我已经将它编辑为包含导入部分。