Ich versuche, ein StringArray zu verwenden, um Elemente in einem ListView mit einem benutzerdefinierten Adapter anzuzeigen.Verwendung von StringArrays in einem benutzerdefinierten ListView-Adapter
Aber es funktioniert nicht.
package ir.safarbazha.safarbazha.Acts;
import android.content.Context;
import android.content.Intent;
import android.content.pm.ActivityInfo;
import android.content.res.Configuration;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v4.view.AbsSavedState;
import android.support.v4.view.GravityCompat;
import android.support.v4.view.accessibility.AccessibilityNodeInfoCompat;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBar;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.Toast;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationHandler;
import java.text.Format;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
import java.util.Locale;
import javax.xml.datatype.DatatypeConstants;
import ir.safarbazha.safarbazha.Core.adapter.DrawerCustomListAdapter;
import ir.safarbazha.safarbazha.Core.app.AppController;
import ir.safarbazha.safarbazha.R;
import static ir.safarbazha.safarbazha.R.id.content_frame;
import static ir.safarbazha.safarbazha.R.id.toolbar;
public class HomeAct extends AppCompatActivity {
ActionBar homeActionbar;
String[] draweritems;
List<String> drawerItems;
int homeDrawerMenuItemsNumber=1;
DrawerCustomListAdapter drawerCustomListAdapter;
DrawerLayout homeDLayout;
ListView homeDrawerListView;
ImageView mainToolbarMenu;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//Localize...
if (!Locale.getDefault().getLanguage().equals("fa")){
String languageToLoad = "fa";
Locale locale = new Locale(languageToLoad);
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
getBaseContext().getResources().updateConfiguration(config,
getBaseContext().getResources().getDisplayMetrics());
this.setContentView(R.layout.act_about);
setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
setContentView(R.layout.act_home);
homeDLayout=(DrawerLayout)findViewById(R.id.drawer_layout);
homeDrawerListView=(ListView)findViewById(R.id.drawer_lv);
//Set Custom ToolBar...
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
homeActionbar=getSupportActionBar();
final LayoutInflater inflator = (LayoutInflater) this
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View v = inflator.inflate(R.layout.toolbar, null);
homeActionbar.setCustomView(v);
homeActionbar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
//Set Custom ToolBar Objects...
//MainToolBar Menu Image Object...
mainToolbarMenu=(ImageView)findViewById(R.id.nav_drawer_menu);
mainToolbarMenu.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (homeDLayout.isDrawerOpen(GravityCompat.START))
homeDLayout.closeDrawer(GravityCompat.START);
else homeDLayout.openDrawer(GravityCompat.START);
}
});
//Set Custom Home Navigation Drawer...
draweritems= getResources().getStringArray(R.array.main_titles);
drawerItems=new ArrayList<String>(Arrays.asList(draweritems));
drawerCustomListAdapter=new DrawerCustomListAdapter(this,draweritems);
homeDrawerListView.setAdapter(drawerCustomListAdapter);
// homeDrawerListView.setAdapter(new ArrayAdapter<String>(
// this,R.layout.drawer_list_row,homeDrawerMenuItems));
// homeDrawerListView.setAdapter(new ArrayAdapter<String>(
// this,android.R.layout.simple_list_item_1,homeDrawerMenuItems));
homeDrawerListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
String selectedItem=getResources().getStringArray(R.array.main_titles)[position];
Toast.makeText(getBaseContext(),"برروی "+selectedItem+"کلیک شد!",Toast.LENGTH_SHORT).show();
}
});
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
.setAction("Action", null).show();
}
});
}
}
package ir.safarbazha.safarbazha.Core.adapter;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.List;
import ir.safarbazha.safarbazha.R;
public class DrawerCustomListAdapter extends BaseAdapter{
public Context context;
public List<String> drawerItems;
private static LayoutInflater inflater=null;
public void drawerCustomListViewItemRow(
Context context,List<String> drawerItems
){
this.context=context;
this.drawerItems=drawerItems;
inflater=(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return drawerItems.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return drawerItems.get(position);
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
View vi = convertView;
if (vi == null)
vi = inflater.inflate(R.layout.drawer_list_row, null);
TextView title = (TextView) vi.findViewById(R.id.drawer_lv_title);
title.setText(drawerItems.get(position));
ImageView icon=(ImageView)vi.findViewById(R.id.drawer_lv_icon);
icon.setImageResource(R.drawable.ic_menu_left);
return vi;
}
/*
public Object getItem(int position) {
return position;
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
View vi=convertView;
if(convertView==null)
vi = inflater.inflate(R.layout.drawer_list_row, null);
TextView title = (TextView)vi.findViewById(R.id.drawer_lv_title); // title
ImageView icon=(ImageView)vi.findViewById(R.id.drawer_lv_icon); // thumb image
// Setting all values in listview
title.setText(R.string.app_name);
icon.setImageResource(R.drawable.ic_account_circle);
return vi;
}
*/
}
Meine Android Studio sagt, dass das Problem in HomeAct ist, wo ich getippt: (this,draweritems);
Bitte senden Sie den vollständigen Fehler –
DrawerCustomListAdapter' keinen Konstruktor hat. – Karakuri
Konstruktor? Was und wo muss ich es hinzufügen? – Amin