我有一个ListView适配器,一个getter-setter类和一个显示ListView并进行查询的类。 这很完美但突然ListView开始只显示2个变量。其他项目显示为空白。
有人能指出我的错误吗?
ListView类
public class ListViewAdapter extends BaseAdapter {
Context context;
LayoutInflater inflater;
ImageLoader imageLoader;
private List<JobsListItems> anunturiList = null;
private ArrayList<JobsListItems> arraylist;
public ListViewAdapter(Context context, List<JobsListItems> anunturiList) {
this.context = context;
this.anunturiList = anunturiList;
inflater = LayoutInflater.from(context);
this.arraylist = new ArrayList<JobsListItems>();
this.arraylist.addAll(anunturiList);
imageLoader = new ImageLoader(context);
}
public class ViewHolder {
TextView name;
TextView description;
TextView createdAt;
TextView offer;
TextView date;
ImageView jobPicture;
}
@Override
public int getCount() {
return anunturiList.size();
}
@Override
public Object getItem(int position) {
return anunturiList.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
public View getView(final int position, View view, ViewGroup parent) {
final ViewHolder holder;
if (view == null) {
holder = new ViewHolder();
view = inflater.inflate(R.layout.listview_item, null);
holder.name = (TextView) view.findViewById(R.id.rank);
holder.description = (TextView) view.findViewById(R.id.description);
holder.createdAt = (TextView) view.findViewById(R.id.population);
holder.offer = (TextView) view.findViewById(R.id.offer_list);
holder.date = (TextView) view.findViewById(R.id.date);
// Locate the ImageView in listview_item.xml
//holder.jobPicture = (ImageView) view.findViewById(R.id.img);
view.setTag(holder);
} else {
holder = (ViewHolder) view.getTag();
}
holder.name.setText(anunturiList.get(position).getName());
holder.description.setText(anunturiList.get(position).getDescription());
holder.createdAt.setText(anunturiList.get(position).getCreatedAt());
holder.offer.setText(anunturiList.get(position).getPrice());
holder.date.setText(anunturiList.get(position).getDate());
return view;
}
}
主要课程
public class JobsListActivity extends BaseActivity {
public JobsListActivity() {
super(R.string.app_name);
}
private List<ParseObject> anunturi;
private Dialog progressDialog;
ListView listview;
ListViewAdapter adapter;
private List<JobsListItems> anunturiList = null;
private String data;
private int limit =6;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.listview_main);
onCreateParse();
ParseUser.enableAutomaticUser();
ParseACL defaultACL = new ParseACL();
defaultACL.setPublicReadAccess(true);
ParseACL.setDefaultACL(defaultACL, true);
new RemoteDataTask().execute();
// registerForContextMenu(getListView());
setSlide();
}
public class RemoteDataTask extends AsyncTask<Void, Void, Void> {
@Override
protected void onPreExecute() {
JobsListActivity.this.progressDialog = ProgressDialog.show(
JobsListActivity.this, "", "Loading...", true);
super.onPreExecute();
}
protected Void doInBackground(Void... params) {
anunturiList = new ArrayList<JobsListItems>();
try {
ParseQuery<ParseObject> query = new ParseQuery<ParseObject>(
"Anunturi");
query.setCachePolicy(ParseQuery.CachePolicy.NETWORK_ELSE_CACHE);
query.setLimit(limit);
query.orderByDescending("_created_at");
anunturi = query.find();
for (ParseObject todo : anunturi) {
data = String.valueOf(todo.getCreatedAt());
JobsListItems map = new JobsListItems();
map.setName("Job: " + (String) todo.get("jobName"));
map.setDescription("Details: "
+ (String) todo.get("jobDescription"));
map.setCreatedAt((String) todo.get("Needs help: "
+ "username"));
map.setPrice((String) todo.get("Exchange: " + "jobPrice"
+ "Dollars"));
map.setDate((String) data);
anunturiList.add(map);
JobsListActivity.this.progressDialog.dismiss();
}
} catch (ParseException e) {
Log.e("Error", e.getMessage());
e.printStackTrace();
}
return null;
}
@Override
protected void onProgressUpdate(Void... values) {
super.onProgressUpdate(values);
}
@Override
protected void onPostExecute(Void result) {
listview = (ListView) findViewById(R.id.listview);
adapter = new ListViewAdapter(JobsListActivity.this, anunturiList);
listview.setAdapter(adapter);
JobsListActivity.this.progressDialog.dismiss();
listview.setOnScrollListener(new OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView view,
int scrollState) {
int threshold = 1;
int count = listview.getCount();
if (scrollState == SCROLL_STATE_IDLE) {
if (listview.getLastVisiblePosition() >= count
- threshold) {
// Execute LoadMoreDataTask AsyncTask
new LoadMoreDataTask().execute();
}
}
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
}
});
}
private class LoadMoreDataTask extends AsyncTask<Void, Void, Void> {
@Override
protected void onPreExecute() {
super.onPreExecute();
JobsListActivity.this.progressDialog = ProgressDialog.show(
JobsListActivity.this, "", "Loading...", true);
}
@Override
protected Void doInBackground(Void... params) {
anunturiList = new ArrayList<JobsListItems>();
try {
ParseQuery<ParseObject> query = new ParseQuery<ParseObject>(
"Anunturi");
query.orderByDescending("_created_at");
query.setLimit(limit += 6);
anunturi = query.find();
for (ParseObject todo : anunturi) {
data = String.valueOf(todo.getCreatedAt());
JobsListItems map = new JobsListItems();
map.setName("Job: " + (String) todo.get("jobName"));
map.setDescription("Details: "
+ (String) todo.get("jobDescription"));
map.setCreatedAt((String) todo.get("Needs help: "
+ "username"));
map.setPrice((String) todo.get("Exchange: " + "jobPrice"
+ "Dollars"));
map.setDate((String) data);
anunturiList.add(map);
}
} catch (ParseException e) {
Log.e("Error", e.getMessage());
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void result) {
// Locate listview last item
int position = listview.getLastVisiblePosition();
// Pass the results into ListViewAdapter.java
adapter = new ListViewAdapter(JobsListActivity.this, anunturiList);
// Binds the Adapter to the ListView
listview.setAdapter(adapter);
// Show the latest retrived results on the top
listview.setSelectionFromTop(position, 0);
progressDialog.dismiss();
}
}
}
}
答案 0 :(得分:0)
您是否确定未显示的其他值不为空?我会做一个简单的Log.v("VALUE", anunturiList.get(position).getCreatedAt());
,并确保传入适配器的ArrayList
没有这些字段的空值。
没有任何意义,为什么有两个值显示但其他值不是,除非这些值是空的。