我感觉有点愚蠢,因为我找不到这个问题的答案,这让我觉得我实际上是在问错误的问题.但是,这里......
我有一个列表视图,以及在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) 我想在我的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应用程序,用于列表视图.
适配器是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)
有人能告诉我我做错了什么或为什么应用程序崩溃?
我有一个带有一些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.这就是我得到例外的地方.如果我通过单击按钮从我的视图中调用相同的方法,它可以工作.
我有这种类型的错误,但我没有得到我能做的事情.
我得到了以下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
我有一些RecyclerView
带隐形按钮的项目,我想更改活动中的所有按钮可见性.像这样:
请帮我.
我是kotlin编程语言的新手,如何在android中使用基本适配器在kotlin中实现列表视图.任何人都可以帮助我.
嘿,我是 adpater 中DiffUtil的新手。我读了一些来自堆栈溢出、谷歌文档和一些文章的文章。我试图理解DiffUtil areItemsTheSame和areContentsTheSame的回调,但是我不清楚这意味着什么。我正在添加一些代码,请查看。如果我做错了请指导我。
组密钥
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
我有一个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
我收到错误:
期待会员声明
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
我想在 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
android ×11
android-adapter ×11
kotlin ×3
admob ×1
constructor ×1
crash ×1
java ×1
native-ads ×1