1
顯示從CSV文件中讀取數據我是很新的在Android Studio中編程,並想使一個應用程序,我可以在工作中使用。基本思想是將產品列表從CSV文件導入到應用程序中,並將其顯示爲列表視圖,以便爲每個文件提供相關文檔。嘗試在ListView
該程序從沒有問題的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 + '\'' +
'}';
}
}
感謝您對R eply,我添加了ProdList1,因爲我沒有想法。然而,它仍然具有與之前相同的構造函數錯誤。我認爲它與我嘗試顯示的陣列類型有關,但我又是一個完整的noob。 –
您正在使用ArrayAdapter作爲String對象,但您正在傳遞ProdSample類。您需要創建你在這種情況下,自己的陣列適配器 –
見定製陣列適配器更新的答案使用ProdSample –