Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/218.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 Android SQLite自定义适配器和自定义ListView_Java_Android_Android Sqlite_Android Adapter - Fatal编程技术网

Java Android SQLite自定义适配器和自定义ListView

Java Android SQLite自定义适配器和自定义ListView,java,android,android-sqlite,android-adapter,Java,Android,Android Sqlite,Android Adapter,我是一个非常新的android开发者,我一直在尝试通过创建简单的应用程序来学习它 现在,我一直在尝试为我的应用程序创建自定义列表视图 我的数据存储在SQLite中,我将这些数据称为列表。我似乎找不到一个网站来演示如何让SQLite数据与自定义ListView一起工作 下面是我的数据,我希望有人能帮助我设置自定义适配器以使用sqlite数据 Records.java public class Records { private long id; private String nam

我是一个非常新的android开发者,我一直在尝试通过创建简单的应用程序来学习它

现在,我一直在尝试为我的应用程序创建自定义列表视图

我的数据存储在SQLite中,我将这些数据称为列表。我似乎找不到一个网站来演示如何让SQLite数据与自定义ListView一起工作

下面是我的数据,我希望有人能帮助我设置自定义适配器以使用sqlite数据

Records.java

public class Records {
    private long id;
    private String name;
    private String type;
    private float mf;
    private float mftop;
    private float mfbot;
    private float mfleft;
    private float mfright;
    private float rf;
    private float rftop;
    private float rfbot;
    private float rfleft;
    private float rfright;
    private float tb;
    private float tbtop;
    private float tbbot;
    private float tbleft;
    private float tbright;
    private float bridge;
    private float bridgel;
    private float bridger;

    public long getId() {
        return id;
    }

    public void setId(long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }

    // Middle Finger
    public float getMF() {
        return mf;
    }

    public void setMF(float mf) {
        this.mf = mf;
    }

    public float getMFTop() {
        return mftop;
    }

    public void setMFTop(float mftop) {
        this.mftop = mftop;
    }

    public float getMFBot() {
        return mfbot;
    }

    public void setMFBot(float mfbot) {
        this.mfbot = mfbot;
    }

    public float getMFLeft() {
        return mfleft;
    }

    public void setMFLeft(float mfleft) {
        this.mfleft = mfleft;
    }

    public float getMFRight() {
        return mfright;
    }

    public void setMFRight(float mfright) {
        this.mfright = mfright;
    }

    //Ring Finger
    public float getRF() {
        return rf;
    }

    public void setRF(float rf) {
        this.rf = rf;
    }

    public float getRFTop() {
        return rftop;
    }

    public void setRFTop(float rftop) {
        this.rftop = rftop;
    }

    public float getRFBot() {
        return rfbot;
    }

    public void setRFBot(float rfbot) {
        this.rfbot = rfbot;
    }

    public float getRFLeft() {
        return rfleft;
    }

    public void setRFLeft(float rfleft) {
        this.rfleft = rfleft;
    }

    public float getRFRight() {
        return rfright;
    }

    public void setRFRight(float rfright) {
        this.rfright = rfright;
    }

    //Thumb
    public float getTB() {
        return tb;
    }

    public void setTB(float tb) {
        this.tb = tb;
    }

    public float getTBTop() {
        return tbtop;
    }

    public void setTBTop(float tbtop) {
        this.tbtop = tbtop;
    }
    public float getTBBot() {
        return tbbot;
    }

    public void setTBBot(float tbbot) {
        this.tbbot = tbbot;
    }
    public float getTBLeft() {
        return tbleft;
    }

    public void setTBLeft(float tbleft) {
        this.tbleft = tbleft;
    }
    public float getTBRight() {
        return tbright;
    }

    public void setTBRight(float tbright) {
        this.tbright = tbright;
    }

    //Bridge
    public float getBridge() {
        return bridge;
    }

    public void setBridge(float bridge) {
        this.bridge = bridge;
    }

    public float getBridgeL() {
        return bridgel;
    }

    public void setBridgeL(float bridgel) {
        this.bridgel = bridgel;
    }

    public float getBridgeR() {
        return bridger;
    }

    public void setBridgeR(float bridger) {
        this.bridger = bridger;
    }

    //Will be used by the ArrayAdapter in the ListView
    @Override
    public String toString() {
        return name;
    }

}
public class CustomAdapter extends ArrayAdapter<NTAdapter> {

    Context context;
    int layoutResourceId;
    NTAdapter data[] = null;

    public CustomAdapter(Context context, int layoutResourceId, NTAdapter[] data) {
        super(context, layoutResourceId, data);
        // TODO Auto-generated constructor stub
        this.layoutResourceId = layoutResourceId;
        this.context = context;
        this.data = data;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub

        View row = convertView;
        DataHolder holder = null;

        if (row == null) {
            LayoutInflater inflater = ((Activity)context).getLayoutInflater();
            row = inflater.inflate(layoutResourceId, parent, false);

            holder = new DataHolder();
            holder.dataName = (TextView)row.findViewById(R.id.dataName);
            holder.dataType = (TextView)row.findViewById(R.id.dataType);

            row.setTag(holder);
        } else {
            holder = (DataHolder)row.getTag();
        }

        NTAdapter ntadapter = data[position];
        holder.dataName.setText(ntadapter.name);
        holder.dataType.setText(ntadapter.type);

        return row;
    }

    static class DataHolder {
        TextView dataName;
        TextView dataType;
    }

}
public class NTAdapter {

    public int id;
    public String name, type;

    public NTAdapter() {
        super();
    }

    public NTAdapter(int id, String name, String type) {
        super();
        this.id = id;
        this.name = name;
        this.type = type;
    }
}
public class DataLayout extends ListActivity {
    private RecordsDataSource datasource;

    Button btnDataCancel;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.data_layout);


        datasource = new RecordsDataSource(this);
        datasource.open();

        List<Records> values = datasource.getAllRecords();

        //use the SimpleCursorAdapter to show the
        //elements in a ListView
        ArrayAdapter<Records> adapter = new ArrayAdapter<Records>(this, android.R.layout.simple_list_item_1, values);
        setListAdapter(adapter);

        /**
        CustomAdapter adapter = new CustomAdapter(this, R.layout.data_layout_listview, values);
        listView1 = (ListView)findViewById(R.id.listView1);

        listView1.setAdapter(adapter);
        */

        Button btnDataCancel = (Button)findViewById(R.id.btnDataCancel);

        //Cancel Button
        btnDataCancel.setOnClickListener(new View.OnClickListener() {

            public void onClick(View arg0) {
                //Starting a new Intent
                Intent goMain = new Intent(getApplicationContext(), MainActivity.class);

                startActivity(goMain);
                finish();
            }
        });
    }

    @Override
    protected void onResume() {
        datasource.open();
        super.onResume();
    }

    @Override
    protected void onPause() {
        datasource.close();
        super.onPause();
    }


}
CustomAdapter.java

public class Records {
    private long id;
    private String name;
    private String type;
    private float mf;
    private float mftop;
    private float mfbot;
    private float mfleft;
    private float mfright;
    private float rf;
    private float rftop;
    private float rfbot;
    private float rfleft;
    private float rfright;
    private float tb;
    private float tbtop;
    private float tbbot;
    private float tbleft;
    private float tbright;
    private float bridge;
    private float bridgel;
    private float bridger;

    public long getId() {
        return id;
    }

    public void setId(long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }

    // Middle Finger
    public float getMF() {
        return mf;
    }

    public void setMF(float mf) {
        this.mf = mf;
    }

    public float getMFTop() {
        return mftop;
    }

    public void setMFTop(float mftop) {
        this.mftop = mftop;
    }

    public float getMFBot() {
        return mfbot;
    }

    public void setMFBot(float mfbot) {
        this.mfbot = mfbot;
    }

    public float getMFLeft() {
        return mfleft;
    }

    public void setMFLeft(float mfleft) {
        this.mfleft = mfleft;
    }

    public float getMFRight() {
        return mfright;
    }

    public void setMFRight(float mfright) {
        this.mfright = mfright;
    }

    //Ring Finger
    public float getRF() {
        return rf;
    }

    public void setRF(float rf) {
        this.rf = rf;
    }

    public float getRFTop() {
        return rftop;
    }

    public void setRFTop(float rftop) {
        this.rftop = rftop;
    }

    public float getRFBot() {
        return rfbot;
    }

    public void setRFBot(float rfbot) {
        this.rfbot = rfbot;
    }

    public float getRFLeft() {
        return rfleft;
    }

    public void setRFLeft(float rfleft) {
        this.rfleft = rfleft;
    }

    public float getRFRight() {
        return rfright;
    }

    public void setRFRight(float rfright) {
        this.rfright = rfright;
    }

    //Thumb
    public float getTB() {
        return tb;
    }

    public void setTB(float tb) {
        this.tb = tb;
    }

    public float getTBTop() {
        return tbtop;
    }

    public void setTBTop(float tbtop) {
        this.tbtop = tbtop;
    }
    public float getTBBot() {
        return tbbot;
    }

    public void setTBBot(float tbbot) {
        this.tbbot = tbbot;
    }
    public float getTBLeft() {
        return tbleft;
    }

    public void setTBLeft(float tbleft) {
        this.tbleft = tbleft;
    }
    public float getTBRight() {
        return tbright;
    }

    public void setTBRight(float tbright) {
        this.tbright = tbright;
    }

    //Bridge
    public float getBridge() {
        return bridge;
    }

    public void setBridge(float bridge) {
        this.bridge = bridge;
    }

    public float getBridgeL() {
        return bridgel;
    }

    public void setBridgeL(float bridgel) {
        this.bridgel = bridgel;
    }

    public float getBridgeR() {
        return bridger;
    }

    public void setBridgeR(float bridger) {
        this.bridger = bridger;
    }

    //Will be used by the ArrayAdapter in the ListView
    @Override
    public String toString() {
        return name;
    }

}
public class CustomAdapter extends ArrayAdapter<NTAdapter> {

    Context context;
    int layoutResourceId;
    NTAdapter data[] = null;

    public CustomAdapter(Context context, int layoutResourceId, NTAdapter[] data) {
        super(context, layoutResourceId, data);
        // TODO Auto-generated constructor stub
        this.layoutResourceId = layoutResourceId;
        this.context = context;
        this.data = data;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub

        View row = convertView;
        DataHolder holder = null;

        if (row == null) {
            LayoutInflater inflater = ((Activity)context).getLayoutInflater();
            row = inflater.inflate(layoutResourceId, parent, false);

            holder = new DataHolder();
            holder.dataName = (TextView)row.findViewById(R.id.dataName);
            holder.dataType = (TextView)row.findViewById(R.id.dataType);

            row.setTag(holder);
        } else {
            holder = (DataHolder)row.getTag();
        }

        NTAdapter ntadapter = data[position];
        holder.dataName.setText(ntadapter.name);
        holder.dataType.setText(ntadapter.type);

        return row;
    }

    static class DataHolder {
        TextView dataName;
        TextView dataType;
    }

}
public class NTAdapter {

    public int id;
    public String name, type;

    public NTAdapter() {
        super();
    }

    public NTAdapter(int id, String name, String type) {
        super();
        this.id = id;
        this.name = name;
        this.type = type;
    }
}
public class DataLayout extends ListActivity {
    private RecordsDataSource datasource;

    Button btnDataCancel;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.data_layout);


        datasource = new RecordsDataSource(this);
        datasource.open();

        List<Records> values = datasource.getAllRecords();

        //use the SimpleCursorAdapter to show the
        //elements in a ListView
        ArrayAdapter<Records> adapter = new ArrayAdapter<Records>(this, android.R.layout.simple_list_item_1, values);
        setListAdapter(adapter);

        /**
        CustomAdapter adapter = new CustomAdapter(this, R.layout.data_layout_listview, values);
        listView1 = (ListView)findViewById(R.id.listView1);

        listView1.setAdapter(adapter);
        */

        Button btnDataCancel = (Button)findViewById(R.id.btnDataCancel);

        //Cancel Button
        btnDataCancel.setOnClickListener(new View.OnClickListener() {

            public void onClick(View arg0) {
                //Starting a new Intent
                Intent goMain = new Intent(getApplicationContext(), MainActivity.class);

                startActivity(goMain);
                finish();
            }
        });
    }

    @Override
    protected void onResume() {
        datasource.open();
        super.onResume();
    }

    @Override
    protected void onPause() {
        datasource.close();
        super.onPause();
    }


}
DataLayout.java

public class Records {
    private long id;
    private String name;
    private String type;
    private float mf;
    private float mftop;
    private float mfbot;
    private float mfleft;
    private float mfright;
    private float rf;
    private float rftop;
    private float rfbot;
    private float rfleft;
    private float rfright;
    private float tb;
    private float tbtop;
    private float tbbot;
    private float tbleft;
    private float tbright;
    private float bridge;
    private float bridgel;
    private float bridger;

    public long getId() {
        return id;
    }

    public void setId(long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }

    // Middle Finger
    public float getMF() {
        return mf;
    }

    public void setMF(float mf) {
        this.mf = mf;
    }

    public float getMFTop() {
        return mftop;
    }

    public void setMFTop(float mftop) {
        this.mftop = mftop;
    }

    public float getMFBot() {
        return mfbot;
    }

    public void setMFBot(float mfbot) {
        this.mfbot = mfbot;
    }

    public float getMFLeft() {
        return mfleft;
    }

    public void setMFLeft(float mfleft) {
        this.mfleft = mfleft;
    }

    public float getMFRight() {
        return mfright;
    }

    public void setMFRight(float mfright) {
        this.mfright = mfright;
    }

    //Ring Finger
    public float getRF() {
        return rf;
    }

    public void setRF(float rf) {
        this.rf = rf;
    }

    public float getRFTop() {
        return rftop;
    }

    public void setRFTop(float rftop) {
        this.rftop = rftop;
    }

    public float getRFBot() {
        return rfbot;
    }

    public void setRFBot(float rfbot) {
        this.rfbot = rfbot;
    }

    public float getRFLeft() {
        return rfleft;
    }

    public void setRFLeft(float rfleft) {
        this.rfleft = rfleft;
    }

    public float getRFRight() {
        return rfright;
    }

    public void setRFRight(float rfright) {
        this.rfright = rfright;
    }

    //Thumb
    public float getTB() {
        return tb;
    }

    public void setTB(float tb) {
        this.tb = tb;
    }

    public float getTBTop() {
        return tbtop;
    }

    public void setTBTop(float tbtop) {
        this.tbtop = tbtop;
    }
    public float getTBBot() {
        return tbbot;
    }

    public void setTBBot(float tbbot) {
        this.tbbot = tbbot;
    }
    public float getTBLeft() {
        return tbleft;
    }

    public void setTBLeft(float tbleft) {
        this.tbleft = tbleft;
    }
    public float getTBRight() {
        return tbright;
    }

    public void setTBRight(float tbright) {
        this.tbright = tbright;
    }

    //Bridge
    public float getBridge() {
        return bridge;
    }

    public void setBridge(float bridge) {
        this.bridge = bridge;
    }

    public float getBridgeL() {
        return bridgel;
    }

    public void setBridgeL(float bridgel) {
        this.bridgel = bridgel;
    }

    public float getBridgeR() {
        return bridger;
    }

    public void setBridgeR(float bridger) {
        this.bridger = bridger;
    }

    //Will be used by the ArrayAdapter in the ListView
    @Override
    public String toString() {
        return name;
    }

}
public class CustomAdapter extends ArrayAdapter<NTAdapter> {

    Context context;
    int layoutResourceId;
    NTAdapter data[] = null;

    public CustomAdapter(Context context, int layoutResourceId, NTAdapter[] data) {
        super(context, layoutResourceId, data);
        // TODO Auto-generated constructor stub
        this.layoutResourceId = layoutResourceId;
        this.context = context;
        this.data = data;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub

        View row = convertView;
        DataHolder holder = null;

        if (row == null) {
            LayoutInflater inflater = ((Activity)context).getLayoutInflater();
            row = inflater.inflate(layoutResourceId, parent, false);

            holder = new DataHolder();
            holder.dataName = (TextView)row.findViewById(R.id.dataName);
            holder.dataType = (TextView)row.findViewById(R.id.dataType);

            row.setTag(holder);
        } else {
            holder = (DataHolder)row.getTag();
        }

        NTAdapter ntadapter = data[position];
        holder.dataName.setText(ntadapter.name);
        holder.dataType.setText(ntadapter.type);

        return row;
    }

    static class DataHolder {
        TextView dataName;
        TextView dataType;
    }

}
public class NTAdapter {

    public int id;
    public String name, type;

    public NTAdapter() {
        super();
    }

    public NTAdapter(int id, String name, String type) {
        super();
        this.id = id;
        this.name = name;
        this.type = type;
    }
}
public class DataLayout extends ListActivity {
    private RecordsDataSource datasource;

    Button btnDataCancel;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.data_layout);


        datasource = new RecordsDataSource(this);
        datasource.open();

        List<Records> values = datasource.getAllRecords();

        //use the SimpleCursorAdapter to show the
        //elements in a ListView
        ArrayAdapter<Records> adapter = new ArrayAdapter<Records>(this, android.R.layout.simple_list_item_1, values);
        setListAdapter(adapter);

        /**
        CustomAdapter adapter = new CustomAdapter(this, R.layout.data_layout_listview, values);
        listView1 = (ListView)findViewById(R.id.listView1);

        listView1.setAdapter(adapter);
        */

        Button btnDataCancel = (Button)findViewById(R.id.btnDataCancel);

        //Cancel Button
        btnDataCancel.setOnClickListener(new View.OnClickListener() {

            public void onClick(View arg0) {
                //Starting a new Intent
                Intent goMain = new Intent(getApplicationContext(), MainActivity.class);

                startActivity(goMain);
                finish();
            }
        });
    }

    @Override
    protected void onResume() {
        datasource.open();
        super.onResume();
    }

    @Override
    protected void onPause() {
        datasource.close();
        super.onPause();
    }


}
我知道我的问题是NtaAdapter.java和CustomAdapter.java的设置不正确。但是,我不知道如何修复它,以便它接受存储在值中的数据列表

由于代码开始变得太长而无法阅读,我没有发布我的其他类。但请注意,如果我不使用自定义listview,一切都正常,因为它还没有工作

任何帮助都将不胜感激。先谢谢你

编辑:另外,我知道NtaAdapter不是真正需要的,但我不知道如何使它使我的CustomAdapter.java从我的值中获取数据,并使用它们来设置我的自定义ListView

编辑2:对于那些想知道值是什么的人,请参考DataLayout.java


.

制作CustomAdapter时,您正在尝试传递列表 到接受nAdapter数组的构造函数。所以你的程序不能正常工作

您可以做的是使CustomAdapter类如下所示:

public class CustomAdapter extends ArrayAdapter<Records> {

Context context;
int layoutResourceId;
List<Records> data;


public CustomAdapter(Context context, int layoutResourceId, ArrayList<Records> data) {
    super(context, layoutResourceId, data);
    // TODO Auto-generated constructor stub
    this.layoutResourceId = layoutResourceId;
    this.context = context;
    this.data=data;

}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    // TODO Auto-generated method stub

    View row = convertView;
    DataHolder holder = null;

    if (row == null) {
        LayoutInflater inflater = ((Activity)context).getLayoutInflater();
        row = inflater.inflate(layoutResourceId, parent, false);

        holder = new DataHolder();
        holder.dataName = (TextView)row.findViewById(R.id.dataName);
        holder.dataType = (TextView)row.findViewById(R.id.dataType);

        row.setTag(holder);
    } else {
        holder = (DataHolder)row.getTag();
    }

    Records records = data.get(position);
    holder.dataName.setText(records.getName());
    holder.dataType.setText(records.getType());

    return row;
}

static class DataHolder {
    TextView dataName;
    TextView dataType;
}
公共类CustomAdapter扩展了ArrayAdapter{
语境;
国际布局资源;
列出数据;
公共CustomAdapter(上下文上下文、int-layoutResourceId、ArrayList数据){
超级(上下文、布局资源ID、数据);
//TODO自动生成的构造函数存根
this.layoutResourceId=layoutResourceId;
this.context=上下文;
这个。数据=数据;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
//TODO自动生成的方法存根
视图行=转换视图;
数据持有者=null;
if(行==null){
LayoutInflater充气器=((活动)上下文)。getLayoutInflater();
行=充气机。充气(layoutResourceId,父级,false);
holder=新数据持有者();
holder.dataName=(TextView)row.findViewById(R.id.dataName);
holder.dataType=(TextView)row.findViewById(R.id.dataType);
row.setTag(支架);
}否则{
holder=(DataHolder)row.getTag();
}
记录=数据。获取(位置);
holder.dataName.setText(records.getName());
holder.dataType.setText(records.getType());
返回行;
}
静态类数据保持器{
文本视图数据名;
文本视图数据类型;
}

请注意,如果有人要求任何其他信息,请务必让我知道。再次感谢您的帮助。您使用NtaAdapter的目的是什么?@Tapan Thaker NtaAdapter来自一个网站上的教程,该教程将数据存储为字符串。从这个网站上:我想我当时需要一些东西,但我意识到它就像我的“值”,它存储我的所有数据。我知道如果我能找到一种方法从我的“值”中获取数据"我不需要NtaAdapter。如果您需要更多信息,请务必让我知道。我感谢您的时间。我真的很想感谢您帮助我解决问题。在使用您的解决方案并对我的代码进行一些调整后,它工作得很好。非常感谢您。我希望我能投您一票,但是,我的代表并没有更高韩15岁了,非常抱歉。再一次,非常感谢你帮助我!很好,只是分享知识:)