TabFragment1 sınıfında ArrayList kullanıyorum. Yüklü uygulamalar listesi için adaptörüm var. Ve ben ImageView uygulama adını tıkladığınızda ve ikon TabFragment1 ArrayList gitmeli, ancak bunu çözemiyorum. Iv'i tıkladığımda uygulama çöküyor.Adaptör android'den ArrayList'e ekleme
AppAdapter
public class AppAdapter extends BaseAdapter{
private List<ApplicationInfo> packages;
private LayoutInflater inflater;
private PackageManager pm;
public AppAdapter(Context context, PackageManager pm, List<ApplicationInfo> packages) {
this.packages = packages;
this.pm = pm;
inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public int getCount() {
return packages.size();
}
@Override
public ApplicationInfo getItem(int p1) {
return packages.get(p1);
}
@Override
public long getItemId(int p1) {
return p1;
}
@Override
public View getView(int position, View v, ViewGroup parent) {
View view = null;
final ViewHolder viewHolder;
final TabFragment1 tab1;
if (v == null) {
viewHolder = new ViewHolder();
view = inflater.inflate(R.layout.list_item, parent, false);
viewHolder.tvAppLabel = (TextView) view
.findViewById(R.id.app_item_text);
viewHolder.ivAppIcon = (ImageView) view
.findViewById(R.id.app_item_image);
viewHolder.ivAppAdd = (ImageView) view
.findViewById(R.id.add);
view.setTag(viewHolder);
} else {
view = v;
viewHolder = (ViewHolder) view.getTag();
}
ApplicationInfo app = packages.get(position);
tab1= new TabFragment1();
viewHolder.tvAppLabel.setText(app.loadLabel(pm).toString());
viewHolder.ivAppIcon.setImageDrawable(app.loadIcon(pm));
viewHolder.ivAppAdd.setImageResource(R.drawable.ic_add_circle_outline_black_48dp);
viewHolder.ivAppAdd.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
tab1.data.add(new AddedApps(viewHolder.ivAppIcon.getId(),
viewHolder.tvAppLabel.getText().toString())); //trouble is here
}
});
return view;
}
static class ViewHolder {
private TextView tvAppLabel;
private ImageView ivAppIcon;
private ImageView ivAppAdd;
}
}
TabFragment1
public class TabFragment1 extends Fragment {
private RecyclerView rv;
private FloatingActionButton fab;
private Fragment installedApps;
private FragmentTransaction transaction;
private RecyclerView.LayoutManager layoutManager;
private RecyclerView.Adapter adapter;
public List<AddedApps> data;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.tab_fragment1, container, false);
rv=(RecyclerView) view.findViewById(R.id.recyclerView);
fab=(FloatingActionButton) view.findViewById(R.id.fabBtn);
installedApps = new InstalledApps();
data=new ArrayList<AddedApps>();
data.add(new AddedApps(R.mipmap.ic_launcher,"Application"));
layoutManager = new LinearLayoutManager(getContext());
rv.setLayoutManager(layoutManager);
adapter = new AddedAppsAdapter(data);
rv.setAdapter(adapter);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
transaction = getFragmentManager().beginTransaction();
transaction.replace(R.id.container, installedApps);
transaction.addToBackStack(null);
transaction
.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN)
.commit();
}
});
return view;
}
}
AddedApps
public class AddedApps {
private int icon;
private String name;
public AddedApps(int icon, String name) {
this.icon = icon;
this.name = name;
}
public int getIcon() {
return icon;
}
public String getName() {
return name;
}
}
crashlog: Bir RecyclerView.Adapter < kullanmak> ve etkinlik geri tıklama çağrıyı almak için bir arayüz kullanması gereken bir geri dönüşüm görüntüsü
java.lang.NullPointerException: Attempt to invoke interface method 'boolean java.util.List.add(java.lang.Object)' on a null object reference
at com.kostya.newconcept.adapters.AppAdapter$1.onClick(AppAdapter.java:84)
at android.view.View.performClick(View.java:5204)
at android.view.View$PerformClick.run(View.java:21153)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
2 adaptör var: 1 geri dönüşümcü görünümü ve 1 liste görünümü için. Ben sadece listView bağdaştırıcısında veri çekip TabFragment1'e yerleştirmek istiyorum, daha sonra geri dönüstür. –