我想要一组图像视图,但我不知道如何使用imageview类型的对象填充它.
ImageView[] forAdapter = new ImageView[imageIds.size()];
for(int i = 0; i < imageIds.size(); i++)
{
ImageView mImageView = new ImageView(context);
forAdapter[i] = mImageView.setImageDrawable(((imagesPulled.get(imageIds.get(i)))));
}
Run Code Online (Sandbox Code Playgroud)
这不起作用,因为.setImageDrawable不返回imageview,我不知道任何实际做的对象!
我考虑在数组中使用drawables,但我最终为listview设置了一个arrayadapter,并且我不能使用drawables创建一个R.layout(我会得到一个类转换异常因为xml文件使用的是ImageView而不是drawable类型),所以我只有ImageViews放入一个数组 - 除非我接近错误的问题.
我知道你可以扩展BaseAdapter并覆盖getViewTypeCount()和getItemViewType(postion)方法,并以这种方式获得各种行布局.
但是,我刚刚完成了一个扩展ArrayAdapter的教程,并且getView(int position, View convertView, ViewGroup parent)是唯一的方法覆盖.
在我看来,只是为了遵循这种方法并使用位置可能使用if/switch来确定给定行的膨胀视图.
这是一个正确的假设还是这种方法存在问题?
干杯
我在任何地方都没有看到明确的答案:ArrayAdapter.insert()是否在指定位置插入新项目..或..它是否替换指定位置的信息?
我在显示列表视图时遇到此错误.问题在于适配器,但我找不到解决方案.这在我的logcat中:
FATAL EXCEPTION: main
java.lang.NullPointerException
at com.client.alm.WorkItemAdapter.getView(WorkItemAdapter.java:68)
at android.widget.AbsListView.obtainView(AbsListView.java:2159)
at android.widget.ListView.measureHeightOfChildren(ListView.java:1246)
at android.widget.ListView.onMeasure(ListView.java:1158)
at android.view.View.measure(View.java:15513)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4827)
Run Code Online (Sandbox Code Playgroud)
这是我的适配器:
import java.util.List;
import android.app.Activity;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import com.client.alm.model.WorkItem;
import com.client.alm.model.WorkItemContainer;
public class WorkItemAdapter extends ArrayAdapter<WorkItem> {
private WorkItemContainer container;
private Context context;
int layoutResourceId;
public WorkItemAdapter(Context context, int layoutResourceId,
WorkItemContainer container) {
super(context, layoutResourceId, container.getWorkitems());
this.layoutResourceId = layoutResourceId;
this.context = context;
this.container = container;
}
static class ViewHolder {
ImageView …Run Code Online (Sandbox Code Playgroud) 我使用带有a的数组适配器显示线性布局列表.布局有3个文本字段和一个隐藏按钮,单击列表项时会显示该按钮.我想要做的是将onclicklistener附加到按钮,该按钮将从arraylist/adapter中删除该行并更新数据集.我有以下代码:
public class CheckAdapter extends ArrayAdapter<Check> {
Context context;
int layoutResourceId;
ArrayList<Check> data = null;
public CheckAdapter(Context context, int resource, ArrayList<Check> objects) {
super(context, resource, objects);
this.context = context;
this.layoutResourceId = resource;
this.data = objects;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
if(convertView == null){
LayoutInflater inflater = ((Activity)context).getLayoutInflater();
convertView = inflater.inflate(layoutResourceId, parent, false);
holder = new ViewHolder(convertView.findViewById(R.id.checklistRoot));
holder.checkName = (TextView) convertView.findViewById(R.id.checklistname);
holder.checkNumber = (TextView) convertView.findViewById(R.id.checklistnumber);
holder.checkTotal = (TextView) convertView.findViewById(R.id.checklisttotal);
holder.deleteButton = …Run Code Online (Sandbox Code Playgroud) android android-arrayadapter android-listview notifydatasetchanged
我有一个问题,我的ListView只显示一行,即使包含数据的ArrayList有2个项目.
为了澄清,是的,我在ScrollView中使用ListView但是为了平衡它我正在使用自定义的ExpandableHeightListView(从SO上的一个答案中检索),这对于这个目的非常有用.此ListView不可滚动.它有固定的高度.
此外,在相同的ScrollView中,其他几个ListView工作正常,但这一个ListView无法正常工作.
更进一步,当我在getView()方法中记录位置变量值时,对于此ListView,它始终为0,而对于其他ListView,它按顺序递增.
我比较了两个Adapter的代码,它们是相同的但仍然是当前的ListView无法正常工作.
我尝试重写getView()方法,但无济于事.
任何帮助赞赏.
如果我给ListView提供固定高度,如250dp,则两行都会显示,但它只显示1行,高度设置为 wrap_content
android listview android-arrayadapter android-layout android-listview
我有一个类作为静态的一些属性,类是静态的,但我得到的错误是字段不是静态的.
我无法找到解决方案,我看到的示例看起来非常相似.视图保持器始终在适配器内部作为静态或公共静态
这是我的ArrayAdapter:
public class NoteAdapter extends ArrayAdapter<Note> {
public static class ViewHolder{
TextView noteTitle;
TextView noteBody;
ImageView noteIcon;
}
public NoteAdapter(Context context, ArrayList<Note> notes) {
super(context, 0, notes);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
Note note = getItem(position);
ViewHolder viewHolder;
if (convertView == null) {
viewHolder = new ViewHolder();
convertView = LayoutInflater.from(getContext()).inflate(R.layout.list_row, parent, false);
// == Here I am getting the error ==
ViewHolder.noteTitle = (TextView) convertView.findViewById(R.id.text_item_note_title);
ViewHolder.noteBody = (TextView) convertView.findViewById(R.id.text_item_note_body); …Run Code Online (Sandbox Code Playgroud) adapter.notifyDataSetChanged(); 我没有在android中工作我正在检索for循环中的值,但值没有显示在屏幕上.我的java文件:
private static final String TAG_NAME="Notification";
String[] resultsAsString = {""};
ListView listView;
ArrayAdapter<String> adapter;
adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, resultsAsString);
ParseQuery<ParseObject> parseObjectParseQuery=new ParseQuery<ParseObject>("PushNotifications");
parseObjectParseQuery.findInBackground(new FindCallback<ParseObject>() {
@Override
public void done(List<ParseObject> objects, ParseException e) {
if (e==null){
resultsAsString = new String[objects.size()];
Log.d(TAG_NAME,"Objects size in MyService is:"+objects.size());
if(objects.size()>0){
Log.d(TAG_NAME,"Object size is "+objects.size());
for(int index = 0; index < objects.size(); index++){
resultsAsString[index] = objects.get(index).getString("Message");
Log.d(TAG_NAME,"result value is:"+resultsAsString[index]);
}
adapter.notifyDataSetChanged();
}else {
Log.d(TAG_NAME,"Object size is "+objects.size());
}
}
}
});
listView = (ListView) …Run Code Online (Sandbox Code Playgroud) 我有一个ListView,我想用视频形式填充URL.我可以从URL轻松地在ListView适配器中显示图片,但是如何加载视频缩略图?
android listview android-arrayadapter listview-adapter android-videoview
所以我有一个listview从基于Room的SQLite数据库中提取数据.它看起来很好地读取数据,但是当页面加载时我会得到前10个条目(显示的大小),当我尝试向下滚动列表视图时,它会重新开始并开始获取条目在列表的开头再次.屏幕截图上的红色圆圈显示了列表的顶部和底部以及存在的重复.
public class NeighborhoodListAdapter
extends ArrayAdapter<LivingCity> {
private List<LivingCity> neighborhood;
Context context;
// View lookup cache
private static class ViewHolder {
TextView cityName;
}
public NeighborhoodListAdapter(List<LivingCity> neighborhood, Context context) {
super(context, R.layout.object_main_citydetailsrow, neighborhood);
this.context = context;
this.neighborhood = neighborhood;
}
@NonNull
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// Get the data item for this position
LivingCity city = getItem(position);
ViewHolder viewHolder;
if (convertView == null) {
viewHolder = new ViewHolder();
LayoutInflater inflater = LayoutInflater.from(getContext());
convertView = …Run Code Online (Sandbox Code Playgroud)