android - 应用程序不断关闭 -csv 文件 - Android 工作室 - 已更新
问题描述
出于某种原因,当我单击创建购物清单按钮时,我的应用程序停止了。它应该做的是转到新屏幕并显示一个列表视图,其中包含从 csv 导入的数据。
我打开了一个新项目,只是将此代码放入 mainactivity.java 和 activity_mainxml,没有任何按钮或背景或其他屏幕,我的 csv 正确显示。那么我传输代码的方式有问题吗?
我的代码如下:
创建.java
package com.app.supermarketaislefinder;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ListView;
public class create extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
InputStream inputStream = getResources().openRawResource(R.raw.shopitems);
CSVFile csvFile = new CSVFile(inputStream);
List<String[]> foodList = csvFile.read();
MyListAdapter adapter=new MyListAdapter(this, R.layout.listrow,R.id.txtid, foodList);
ListView listView=(ListView)findViewById(R.id.listview);
listView.setAdapter(adapter);
}
private class CSVFile {
InputStream inputStream;
public CSVFile(InputStream inputStream){
this.inputStream = inputStream;
}
public List<String[]> read(){
//
List<String[]> resultList = new ArrayList<String[]>();
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
try {
String line;
while ((line = reader.readLine()) != null) {
String[] row = line.split(",");
resultList.add(row);
}
}
catch (IOException e) {
Log.e("Main",e.getMessage());
}
finally {
try {
inputStream.close();
}
catch (IOException e) {
Log.e("Main",e.getMessage());
}
}
return resultList;
}
}
}
我的列表适配器
package com.app.supermarketaislefinder;
import java.util.List;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;
public class MyListAdapter extends ArrayAdapter<String[]>{
int groupid;
List<String[]> items;
Context context;
String path;
public MyListAdapter(Context context, int vg, int id, List<String[]> items){
super(context,vg, id, items);
this.context=context;
groupid=vg;
this.items=items;
}
static class ViewHolder {
public TextView textid;
public TextView textname;
}
public View getView(int position, View convertView, ViewGroup parent) {
View rowView = convertView;
if(rowView==null){
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
rowView= inflater.inflate(groupid, parent, false);
ViewHolder viewHolder = new ViewHolder();
viewHolder.textid = (TextView) rowView.findViewById(R.id.aisle);
viewHolder.textname = (TextView) rowView.findViewById(R.id.item);
rowView.setTag(viewHolder);
}
// Fill data
ViewHolder holder = (ViewHolder) rowView.getTag();
String[] row=items.get(position);
holder.textid.setText(row[0]);
holder.textname.setText(row[1]);
return rowView;
}
}
活动创建.xml
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".create"
android:background="@drawable/createbackground"
>
<LinearLayout
android:id="@+id/linearLayout"
android:layout_width="384dp"
android:layout_height="117dp"
android:layout_marginEnd="16dp"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:layout_marginStart="16dp"
android:background="@color/colorCreate"
android:orientation="vertical"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<TextView
android:id="@+id/appTitle"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fontFamily="@font/bree_serif"
android:gravity="center"
android:text="Create your Shopping List"
android:textColor="@android:color/black"
android:textSize="34sp" />
</LinearLayout>
<LinearLayout
android:id="@+id/linearLayout6"
android:layout_width="384dp"
android:layout_height="66dp"
android:layout_marginEnd="16dp"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:layout_marginStart="16dp"
android:background="@color/colorCreateSub"
android:orientation="vertical"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/linearLayout">
</LinearLayout>
<ListView
android:id="@+id/listview"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:layout_marginEnd="16dp"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:layout_marginStart="16dp"
android:layout_marginTop="8dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/linearLayout6"
app:layout_constraintVertical_bias="0.0" />
</android.support.constraint.ConstraintLayout>
list_row.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
<TextView
android:id="@+id/txtid"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10sp"
android:textStyle="bold" >
</TextView>
<TextView
android:id="@+id/txtname"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10sp"
android:textStyle="bold" >
</TextView>
</LinearLayout>
解决方案
我发现我输入了错误的 xml 名称。
前:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
后:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_create);
哎呀!
推荐阅读
- c++ - 在 C++ 中计算数组中不相等的字符串
- swift - MacOs 照片项目扩展。添加了照片检测
- python - 在 django 应用程序中,如何防止用户删除不是他们创建的内容?
- python - python - 用 numpy.where 等 numpy 函数替换多个 if elif 语句和条件
- bluetooth - Raspberry Pi3,bluealsa - 已连接但蓝牙扬声器没有声音输出?
- python - 如何在 Flask 中使用 AJAX 遍历列表
- r - importerror 试图将 pandas 数据帧转换为 R 数据帧
- ruby-on-rails - has_one 虽然 has_one 的构建方法
- r - 在 R 中使用 fakeR 模拟数据
- mysql - 我怎么能使用 IN close 两次?