我想问一下,如何让活动read()
看到函数ListView
的结果。我尝试了几个适配器,但没有留下没有结果。这是我的代码:
public class ScanFileResultsActivity extends ListActivity implements View.OnClickListener {
private static final String TAG = "BC FileManipulator";
String[][] arrays = read();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_scan_file_results);
}
public String[][] read() {
try {
String root = Environment.getExternalStorageDirectory().toString();
File myDir = new File(root + "/barcodedata");
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
final String filename = prefs.getString("prefdbname", null) + ".xls";
File myFile = new File(myDir, filename);
WorkbookSettings ws = new WorkbookSettings();
ws.setLocale(new Locale("en", "EN"));
Workbook workbook = Workbook.getWorkbook(myFile);
Sheet s = workbook.getSheet(0);
int rows = s.getRows();
String[][] result = new String[rows][];
for (int i = 0; i < rows; i++) {
Cell[] row = s.getRow(i);
result[i] = new String[row.length];
for (int j = 0; j < row.length; j++) {
result[i][j] = row[j].getContents();
}
}
return result;
} catch (IOException | BiffException e) {
Log.v(TAG, "Error");
}
return null;
}
...
}
答案 0 :(得分:0)
你应该使用ListAdapter中的一个。尝试实现BaseAdapter。这样的事情:
private class ActivityMy extends ListActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_layout);
setListAdapter(new CustomAdapter(this, readData()));
}
private List<DataItem> readData() {
//TODO: Your read method....
return null;
}
private class DataItem {
public String name; //For example
public String age;
}
}
和适配器:
public class CustomAdapter extends BaseAdapter {
private Context context;
private List<DataItem> items;
public CustomAdapter(Context context, List<DataItem> items) {
this.context = context;
this.items = items;
}
@Override
public int getCount() {
return items.size();
}
@Override
public Object getItem(int position) {
return items.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder;
if(convertView==null){
LayoutInflater inflater = ((Activity) context).getLayoutInflater();
convertView = inflater.inflate(listItemLayoutId, parent, false);
viewHolder = new ViewHolder();
viewHolder.nameField = (TextView) convertView.findViewById(R.id.nameField);
viewHolder.ageField = (TextView) convertView.findViewById(R.id.ageField);
convertView.setTag(viewHolder);
}else{
viewHolder = (ViewHolder) convertView.getTag();
}
DataItem objectItem = (DataItem) getItem(position);
if(objectItem != null) {
viewHolder.nameField.setText(objectItem.name);
viewHolder.ageField.setTag(objectItem.age);
}
return convertView;
}
private class ViewHolder {
private TextView nameField;
private TextView ageField;
}
}