【发布时间】:2018-02-21 07:41:21
【问题描述】:
我对在 android studio 中编程非常陌生,并且想制作一个我可以在工作中使用的应用程序。基本思想是将产品列表从 CSV 文件导入应用程序,并将其显示为列表视图,这样我就可以为每个产品调出相关文档。
程序从 CSV 文件读取没有问题,但是当我尝试使用适配器查看 ListView 中的数据时,适配器总是说“无法解析构造函数”。我一直在寻找几天的答案,但我已经放弃了。有人能解释一下吗?
MainActivity.java
package com.example.mblapplication;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.List;
import static com.example.mblapplication.R.id.ProdList1;
public class MainActivity extends AppCompatActivity {
public List<ProdSample> productSamples = new ArrayList<>();
public void readProdData() {
InputStream is = getResources().openRawResource(R.raw.products);
BufferedReader reader = new BufferedReader(
new InputStreamReader(is, Charset.forName("UTF-8"))
);
String line = "";
try {
// Step over headers
reader.readLine();
while ((line = reader.readLine()) != null) {
Log.d("MBLApplication", "Line is: " + line);
// Split by ","
String[] tokens = line.split(",");
// Read the data
ProdSample sample = new ProdSample();
if (tokens[0].length() > 0) {
sample.setSAP(tokens[0]);
} else {
sample.setSAP("");
}
sample.setProdID(tokens[1]);
sample.setWidth(tokens[2]);
sample.setLooms(tokens[3]);
productSamples.add(sample);
Log.d("MBLApplication", "Just created: " + sample);
}
} catch (IOException e) {
Log.wtf("MBLApplication, Error reading file on line " + line, e);
e.printStackTrace();
}
}
ListView listView;
//List<String> listItems = new ArrayList<>(5);
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
readProdData();
ArrayAdapter<String> productAdapter = new ArrayAdapter<String>
(MainActivity.this, android.R.layout.simple_list_item_1, ProdList1, productSamples); //ERROR HERE
//listItems.add(0, "Hello");
//listItems.add(1, "World");
ListView listView = (ListView) findViewById(R.id.ProdList1);
listView.setAdapter(productAdapter);
}
}
ProdSample.class
package com.example.mblapplication;
class ProdSample {
private String SAP;
private String ProdID;
private String Width;
private String Looms;
public String getSAP() {
return SAP;
}
public void setSAP(String SAP) {
this.SAP = SAP;
}
public String getProdID() {
return ProdID;
}
public void setProdID(String prodID) {
this.ProdID = prodID;
}
public String getWidth() {
return Width;
}
public void setWidth(String width) {
this.Width = width;
}
public String getLooms() {
return Looms;
}
public void setLooms(String looms) {
Looms = looms;
}
@Override
public String toString() {
return "ProdSample{" +
"SAP='" + SAP + '\'' +
", ProdID=" + ProdID +
", Width=" + Width +
", Looms='" + Looms + '\'' +
'}';
}
}
【问题讨论】:
标签: java android csv listview arraylist