我想在列表视图的每一行中获得不同的颜色
但目前只显示一种颜色
那我怎么能这样做呢
ArrayAdapter<String> adapter=new ArrayAdapter<String(this,R.layout.latesthappenings,R.id.LH_Titles,titles);
setListAdapter(adapter);
Run Code Online (Sandbox Code Playgroud)
我想在每一行中使用不同的颜色
请告诉我该怎么办
谢谢
我有一个扩展ArrayAdapter的内部类,以便自定义ListView.我想将这个内部类分解为一个单独的文件,以便其他类可以使用它,但在getLayoutInflater()时遇到一些问题.
基本上,我的getView()方法不知道getLayoutInflater()是什么,即使我正在扩展ArrayAdapter.任何人都知道如何正常工作?
谢谢!
public class myDynAdap extends ArrayAdapter<String>
{
String [] list;
public myDynAdap (Context context, int textViewResourceId, String [] objects)
{
super (context, textViewResourceId, objects);
mCtx = context;
list = objects;
}
@Override
public View getView (int position, View convertView, ViewGroup parent)
{
View row = convertView;
if (row == null)
{
LayoutInflater inflater = getLayoutInflater (); // <--- "The method getLayoutInflater() is undefined for the type myDynAdap"
row = inflater.inflate (R.layout.main_listitem, parent, false);
}
TextView tv1 = (TextView) …Run Code Online (Sandbox Code Playgroud) 试图编写我的第一个Android的ArrayAdapter,目前惨遭失败.它在该setAdapter(adapter);行崩溃并抛出NullPointerException.
ContractTestActivity:
public class ContractTestActivity extends Activity {
private ArrayList<Contract> contracts;
public final String TAG = "ContractTest";
//public Contract newContract = new Contract();
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ListView list;
list = (ListView)findViewById(R.id.list);
ArrayAdapter<Contract> adapter = new ContractAdapter(this, android.R.layout.simple_list_item_1, contracts);
list.setAdapter(adapter);
}
}
Run Code Online (Sandbox Code Playgroud)
ContractAdapter:
public class ContractAdapter extends ArrayAdapter<Contract> {
private ArrayList<Contract> contracts;
public ContractAdapter(Context context, int view, ArrayList<Contract> passedContracts) {
super(context, view, passedContracts);
contracts = …Run Code Online (Sandbox Code Playgroud) 我有两个简单的活动 - 活动1:来自Array Activity2的ListView:EditText,用于编辑Activity1中单击的行
当我在Activity2中编辑值并返回到Activity1时,ListView不会重新加载新值.
我想从Activity2返回或恢复Activity1或更新列表的东西时刷新ListView.
我的代码:
static ArrayAdapter<String> dataAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Loading the values to list array
String[][] fulllist = loadArrays();
String[] list = new String[fulllist.length];
for(int i = 0; i<fulllist.length; i++) {
list[i] = fulllist[i][1];
}
// --------------------------------
dataAdapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1,
list);
setListAdapter(dataAdapter);
}
@Override
public void onResume() {
super.onResume();
// Loading the values to list array
String[][] fulllist = loadArrays();
String[] list = new String[fulllist.length];
for(int i = 0; …Run Code Online (Sandbox Code Playgroud) 我正在创建一个自定义数组适配器,我现在想要实现一个处理单击视图的函数.我有两个选择,但我想知道性能/工作速度是否存在差异?
选项1,在arrayAdapter中:
row.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
}
});
Run Code Online (Sandbox Code Playgroud)
选项2,来自主要活动:
listView.setAdapter(adapter);
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
// TODO Auto-generated method stub
}
});
Run Code Online (Sandbox Code Playgroud)
还是他们完全一样?
所以,我有一个自定义适配器,每行有两个EditText字段.
除了保存ArrayList中的值之外,我已经让大部分内容正常工作了.
这是我到目前为止所做的代码:
private void holderTitleSavedOnScroll(final int position, IZUICartViewHolder holder) {
if (!(position == (variantArrayList.size() - 1)) && holder.title != null) {
holder.title.setText(variantArrayList.get(position).getVariantTitle());
final int finalPosition = position;
holder.title.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
final EditText newVariant = (EditText) v;
variantArrayList.get(finalPosition).setVariantTitle(newVariant.getText().toString());
}
});
}
}
Run Code Online (Sandbox Code Playgroud)
所以这实际上做了我想要的,它在焦点改变时保存了值.除了一个问题,它只在焦点改变时保存值.
这在大多数情况下是很好的,除非用户实际按下使整个视图消失的按钮.焦点从未改变,并且值未设置.
所以我猜你们都在想,是的,我们只需调用addOnTextChangedListener并附加一个TextWatcher,添加如下内容:
holder.title.setText(variantArrayList.get(position).getVariantTitle());
final int finalPosition = position;
final EditText holderTitle = (EditText) holder.title;
if (holderTitle.getTag() != null) {
final TextWatcher textWatcher = new TextWatcher() {
@Override
public void …Run Code Online (Sandbox Code Playgroud) 这是我想要调用startActionMode的适配器类.我在setActionMode方法中调用它但得到了以下错误:
无法从Context转换为ActivityFragment.
对于ActivityFragment类型,方法startActionMode(ActivityFragment.ActionModeCallback)未定义.
public class ListAdapter extends ArrayAdapter<ListGettersSetters>
{
ArrayList<ListGettersSetters> arrayListGettersSetters;
LayoutInflater layoutInflater;
Context context;
int Resource, i = 0, j = 0, checkedItemsCount = 0;
Animation animation1;
Animation animation2;
CheckBox flipCheckBox;
viewHolder holder;
ActionMode actionMode;
boolean isActionModeShowing;
static class viewHolder
{
public CheckBox imageView;
public TextView textViewName;
public TextView textViewData;
public TextView textViewDetails;
}
public ListAdapter(Context context, int resource, ArrayList<ListGettersSetters> arrayListGettersSetters)
{
super(context, resource, arrayListGettersSetters);
this.arrayListGettersSetters = arrayListGettersSetters;
Resource = resource;
this.context = context;
layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
animation1 …Run Code Online (Sandbox Code Playgroud) android android-arrayadapter android-context android-listfragment
我的listView需要一个自定义适配器.它需要传递给ASyncTask,它将从RSS提要中获取一些数据,然后希望将该数据(当前标题和日期,两个字符串)设置为该行.
我提出的代码如下,但它没有对适配器做任何事情.
MainActivity.java
import android.app.Activity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;
public class MainActivity extends Activity
{
private ListView listOne;
private ListView listTwo;
RssListViewAdapter adapterOne;
RssListViewAdapter adapterTwo;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.rss_layout);
//Connect all three columns to their ListViews
listOne = (ListView) findViewById(R.id.listOne);
listTwo = (ListView) findViewById(R.id.listTwo);
//Create both adapaters
//TODO: Make custom adapater
adapterOne = new RssListViewAdapter(this);
adapterTwo = new RssListViewAdapter(this);
//Class once for each column. Pass feed URL and Adapter.
new GetRssFeed("http://feeds.arstechnica.com/arstechnica/index", adapterOne, listOne).execute();
new …Run Code Online (Sandbox Code Playgroud) 我正在学习Android Studio中的原型,我遇到了一个障碍,我似乎无法找到任何答案.
我有一个Activity,它将自定义ArrayAdapter显示为ListView.我可以通过单击它们并输入生成的AlertDialog来编辑ListView中的项目.还有一个我可以按下的添加按钮,它会显示一个类似的AlertDialog,但是当我点击保存时,没有任何内容被添加到ListView中.如何将AlertDialog文本输入保存为新的ArrayAdapter项?
我发现的大多数例子都直接在Activity中实例化了ArrayAdapter,而不是像我做的那样通过Fragment实例化.
MainActivity.java
public class MainActivity extends AppCompatActivity {
private static final String TAG = "MainActivity";
@Override
protected void onCreate(Bundle savedInstanceState) { //initialize the activity
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); //establish where the layout will come from
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); //creates a toolbar
setSupportActionBar(toolbar);
if (findViewById(R.id.fragment_container) != null) {
if (savedInstanceState != null) {
return;
}
//creates the first fragment dynamically, so it can be replaced
Fragment firstFragment = new MainActivityFragment();
firstFragment.setArguments(getIntent().getExtras());
getSupportFragmentManager().beginTransaction()
.add(R.id.fragment_container, firstFragment).commit();
}
//This creates the …Run Code Online (Sandbox Code Playgroud) 我一直在四处寻找,试图找出我的代码导致问题的原因.我有一个GridView,它有一个ArrayAdapter,可以使用AsyncTask将照片拉下来.我可以看到正在更新的项目,但是当我尝试更新适配器时,GridView似乎没有使用新视图更新.
这是完成工作的相关代码......
private void fetchJsonResponse(String url) {
// Pass second argument as "null" for GET requests
JsonObjectRequest req = new JsonObjectRequest(Request.Method.GET,
url + "&api_key=" + API_KEY,
null,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
try {
JSONArray photos = response.getJSONArray("photos");
for(int i = 0; i < photos.length(); i++){
JSONObject object = photos.getJSONObject(i);
String url = object.getString("img_src");
//String id = object.getString("id");
list.add(new ImageItem(null, "Picture", url));
Log.i("Debug 2", url);
}
Log.i("Debug 2", list.get(0).toString());
if(gridViewAdapter != null){
gridViewAdapter.clear();
gridViewAdapter.addAll(list);
gridViewAdapter.notifyDataSetChanged();
gridView.invalidateViews(); …Run Code Online (Sandbox Code Playgroud)