标签: android-adapter

ListView ArrayAdapter,隐藏在Row里面的孩子?

我感觉有点愚蠢,因为我找不到这个问题的答案,这让我觉得我实际上是在问错误的问题.但是,这里......

我有一个列表视图,以及在xml中定义的listviewitem,有几个字段,没什么特别的.全部设置为可见.

然后我使用自定义ArrayAdapter绑定到我的ListView,并希望在第5行隐藏我的一个文本视图.但是,它似乎隐藏了我在项目0和项目5上的TextView.这有点奇怪?我已经简化了代码,重现了问题,希望有人能够帮助我......

我的适配器

public class MenuScreenAdapter extends ArrayAdapter<String>
{
    private List<String> _items;
    private Context _context;

    public MenuScreenAdapter(Context context, List<String> items)
    {
        super(context, R.layout.list_menu_item, items);

        _context = context;
        _items = items;
    }

    private MenuScreenAdapter(Context context, int textViewResourceId)
    {
        super(context, textViewResourceId); 
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent)
    {
        View v = convertView;

        if (v == null)
        {
            LayoutInflater vi = (LayoutInflater) _context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            v = vi.inflate(R.layout.list_menu_item, null);
        }
        String o = _items.get(position);    
        if (o …
Run Code Online (Sandbox Code Playgroud)

android android-layout android-listview android-adapter

0
推荐指数
1
解决办法
3835
查看次数

如果我的适配器为空,如何在Listview中显示emptyview?

我想在我的Listview中显示一个Button,以防我没有数据通过自定义数组适配器填充列表.如果我有数据并且我的listview填充了数据项,但是如果我没有数据项,那么一切正常显示listview应该显示ID为"@android:id/empty"的LinearLayout但是它从未显示出来并且我的应用程序在此阶段崩溃.在我的FavoriteStudents.java类文件中我定义了AsyncTask.In doInBackground方法我检查如果我的手机内存中有喜欢的文件为listview创建适配器,如果没有则停止AsyncTask并显示只有一个按钮的列表视图.从doInBackground方法返回后它崩溃并显示我的错误:

10-16 16:06:37.568: E/WindowManager(274): Activity com.example.hellogridview.FavoriteStudets has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@44bfea80 that was originally added here
10-16 16:06:37.568: E/WindowManager(274): android.view.WindowLeaked: Activity com.example.hellogridview.FavoriteStudents has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@44bfea80 that was originally added here
10-16 16:06:37.568: E/WindowManager(274):   at android.view.ViewRoot.<init>(ViewRoot.java:227)
10-16 16:06:37.568: E/WindowManager(274):   at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:148)
10-16 16:06:37.568: E/WindowManager(274):   at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)
10-16 16:06:37.568: E/WindowManager(274):   at android.view.Window$LocalWindowManager.addView(Window.java:424)
10-16 16:06:37.568: E/WindowManager(274):   at android.app.Dialog.show(Dialog.java:239)
10-16 16:06:37.568: E/WindowManager(274):   at com.example.hellogridview.FavoriteStudents$readingFavFileTask.onPreExecute(FavoriteStudents.java:50)
10-16 16:06:37.568: E/WindowManager(274):   at android.os.AsyncTask.execute(AsyncTask.java:391)
10-16 16:06:37.568: E/WindowManager(274):   at com.example.hellogridview.FavoriteStudents.onCreate(FavoriteStudents.java:34)
10-16 16:06:37.568: E/WindowManager(274):   at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
10-16 …
Run Code Online (Sandbox Code Playgroud)

android android-listview android-adapter android-asynctask

0
推荐指数
1
解决办法
2471
查看次数

Adapter.getItem(position)崩溃了应用程序

我正在编写一个带有自定义适配器的Android应用程序,用于列表视图.

适配器是mainActivity类中的变量,包含自定义类的列表.我需要从其他活动访问此列表中的类,但是当应用程序到达适配器中的getItem(position)时,应用程序似乎崩溃.

基本上这就是应用程序的样子:

在MainActivity类中有一个基本的自定义适配器:

public class MainActivity extends Activity {
    public static MyAdapter myAdapter;
    ...
}
Run Code Online (Sandbox Code Playgroud)

适配器仅具有getItem等基本功能,并具有自定义(基本)类的列表

public class MyAdapter extends BaseAdapter {
    private ArrayList<MyClass> tours = new ArrayList<MyClass>();

    @Override
    public Object getItem(int arg0) {
        return getItem(arg0);
    }
    ...
}
Run Code Online (Sandbox Code Playgroud)

打开其他活动时,会向其传递索引以从列表中访问某个对象.

唯一的问题是当我尝试从这个列表中访问一个类时,应用程序崩溃了......我使用以下代码从适配器的列表中访问该类:

MyClass myClass = (MyClass)MainActivity.myAdapter.getItem(index);
Run Code Online (Sandbox Code Playgroud)

有人能告诉我我做错了什么或为什么应用程序崩溃?

java crash android android-adapter

0
推荐指数
1
解决办法
368
查看次数

如何从customAdapter类更新活动?

我有一个带有一些textview和listview的用户界面.如果CustomAdapter类中出现特定的内容,我想更新我的textviews.我的CustomAdapter类中的一个事件将触发MyActivity类的更改.

listview从json获取数据,该json是从服务器获取的.现在假设json只包含数字,这些数字在listview中是监听的.工作良好.我计算了最大数量,但是我无法更新我的textview,它会显示最大数量.我得到了NullPointerException.如何保留该对象引用?

UserArrayAdapter.java

public View getView(final int position, final View convertView, final ViewGroup parent) {
        return displayStuff(dev, position, convertView, parent);        
    }
Run Code Online (Sandbox Code Playgroud)

电话

private View displayStuff(LeDevice dev, int position, View convertView, final ViewGroup parent) {
  if(maxDevice ==null){
       callMethodInMainActivity.java to update a textview()
    }
}
Run Code Online (Sandbox Code Playgroud)

切换到MainActivity.java

Textview tv_field;
public void callMethodInMainActivity.java to update a textview(){
  tv_field = (TextView)findViewById(R.id.tv_maxNumber);

            tv_field.setText(42); //!!NullPointer!!
}
Run Code Online (Sandbox Code Playgroud)

我从UserArrayAdapter调用MainActivity中的方法,并想访问tv_field.这就是我得到例外的地方.如果我通过单击按钮从我的视图中调用相同的方法,它可以工作.

android android-adapter android-activity

0
推荐指数
1
解决办法
1145
查看次数

RecyclerView适配器Lint错误不会将位置视为已修复

我有这种类型的错误,但我没有得到我能做的事情.

我得到了以下lint错误.

不要把位置视为固定; 只能立即使用并调用holder.getAdapterPosition()以便稍后查找.

当项目的位置在数据集中发生变化时,RecyclerView不会再次调用onBindViewHolder,除非项目本身无效或无法确定新位置.因此,您只应在获取此方法中的相关数据项时使用position参数,并且不应保留它的副本.

如果您稍后需要某个项目的位置(例如,在单击侦听器中),请使用具有更新的适配器位置的getAdapterPosition().

我的RecyclerView适配器:

   /**
     * Right Content Adapter
     */
    public class RightContentAdapter
            extends RecyclerView.Adapter<RightContentAdapter.ViewHolder> {

        public final ArrayList<IdNamePair> mValues;
        public Activity context;
        private int pos;

        public RightContentAdapter(Activity context, ArrayList<IdNamePair> items) {
            mValues = items;
            this.context = context;

        }

        @Override
        public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
            View view = LayoutInflater.from(parent.getContext())
                    .inflate(R.layout.activity_filter_checkbox, parent, false);

            Log.logInfo("onCreateViewHolder call");

            return new ViewHolder(view);
        }

        @Override
        public void onBindViewHolder(final ViewHolder holder, final int position) {
            final IdNamePair idNamePair = mValues.get(position);
            holder.onBind = …
Run Code Online (Sandbox Code Playgroud)

android android-adapter android-checkbox android-recyclerview

0
推荐指数
1
解决办法
3874
查看次数

从Activity中显示/隐藏RecyclerView适配器中的按钮

我有一些RecyclerView带隐形按钮的项目,我想更改活动中的所有按钮可见性.像这样:

之前

单击

请帮我.

android android-adapter android-recyclerview

0
推荐指数
1
解决办法
2331
查看次数

我们如何在android中使用kotlin实现基础适配器?

我是kotlin编程语言的新手,如何在android中使用基本适配器在kotlin中实现列表视图.任何人都可以帮助我.

android android-adapter kotlin

0
推荐指数
1
解决办法
4739
查看次数

在适配器 kotlin 中更新视图时如何正确使用 Diff utils

嘿,我是 adpater 中DiffUtil的新手。我读了一些来自堆栈溢出、谷歌文档和一些文章的文章。我试图理解DiffUtil areItemsTheSameareContentsTheSame回调,但是我不清楚这意味着什么。我正在添加一些代码,请查看。如果我做错了请指导我。

组密钥

data class GroupKey(
    val type: EnumType,
    val sender: Sender? = null,
    val close: String? = null
)
Run Code Online (Sandbox Code Playgroud)

枚举类型

enum class EnumType {
    A,
    B
}
Run Code Online (Sandbox Code Playgroud)

发件人

data class Sender(
    val company: RoleType? = null,
    val id: String? = null
)
Run Code Online (Sandbox Code Playgroud)

角色类型

data class RoleType(
    val name : String?= null
    val id: String? = null
)
Run Code Online (Sandbox Code Playgroud)

团体

data class Group(
    val key: GroupKey,
    val value: MutableList<Item?>
)
Run Code Online (Sandbox Code Playgroud)

我将我的列表传递给适配器,它是一个Group …

android android-adapter kotlin android-recyclerview android-diffutils

0
推荐指数
1
解决办法
4004
查看次数

列表视图:获取所选行的文本

我有一个listview图像和textview每行一个.我希望在点击整行时获得文本的值.下面的代码表现得很奇怪.我得到的是随机行的值,而不是点击的那一行.

我没有弄错.任何帮助,将不胜感激.

我这样做,:

public static class LazyAdapter extends BaseAdapter {

    private Activity activity;
    private ArrayList<HashMap<String, String>> data;
    private static LayoutInflater inflater=null;
    public ImageLoader imageLoader; 

    public LazyAdapter(Activity a, ArrayList<HashMap<String, String>> d) {
        activity = a;
        data=d;
        inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        imageLoader=new ImageLoader(activity.getApplicationContext());
    }

    public int getCount() {
        return data.size();
    }

    public Object getItem(int position) {
        return position;
    }

    public long getItemId(int position) {
        return position;
    }

    public View getView(final int position, View convertView, ViewGroup parent) {
        View vi=convertView; …
Run Code Online (Sandbox Code Playgroud)

android android-lazyadapter android-listview android-adapter

-1
推荐指数
1
解决办法
3952
查看次数

在 Kotlin 中使用辅助构造函数

我收到错误:

期待会员声明

class MyAdapter(val context: Context)  {
    constructor(context: Context,  itemInfos: List<ItemInfo>): RecyclerView.Adapter<ContentItemViewHolder> {

    }
}
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

android constructor class-constructors android-adapter kotlin

-1
推荐指数
1
解决办法
2559
查看次数

如何在回收站视图 android 中放置 Admob Native Advanced Ads?

我想在 android 应用程序中我的回收站视图的每 3 个位置放置 admob 原生高级广告。

我想要 Admob 提供的模板。

https://github.com/googleads/googleads-mobile-android-native-templates

下面是原生广告的xml代码实现

<com.google.android.ads.nativetemplates.TemplateView
android:id="@+id/my_template"
<!-- this attribute determines which template is used. The other option is
@layout/gnt_medium_template_view -->
app:gnt_template_type="@layout/gnt_small_template_view"
android:layout_width="match_parent"
android:layout_height="match_parent" />
Run Code Online (Sandbox Code Playgroud)

这是 Admob 的 Java 代码实现

   MobileAds.initialize(this, "[_app-id_]");
   AdLoader adLoader = new AdLoader.Builder(this, "[_ad-unit-id_]")
 .forUnifiedNativeAd(new UnifiedNativeAd.OnUnifiedNativeAdLoadedListener() {
   @Override
   public void onUnifiedNativeAdLoaded(UnifiedNativeAd unifiedNativeAd) {
      NativeTemplateStyle styles = new
          NativeTemplateStyle.Builder().withMainBackgroundColor(background).build();

      TemplateView template = findViewById(R.id.my_template);
      template.setStyles(styles);
      template.setNativeAd(unifiedNativeAd);

    }
 })
 .build();

  adLoader.loadAd(new AdRequest.Builder().build());
 }
Run Code Online (Sandbox Code Playgroud)

RecyclerView 适配器类

public class ArticleAdapter extends RecyclerView.Adapter<ArticleAdapter.MyViewHolder>{
private …
Run Code Online (Sandbox Code Playgroud)

android admob android-adapter android-recyclerview native-ads

-1
推荐指数
1
解决办法
7504
查看次数