我有下一个结构:
ArrayList<String> arrayList = new ArrayList<>();
list = (ListView) findViewById(R.id.list1);
arrayAdapter = new ArrayAdapter<String>(INGR_NOTAS.this, R.layout.list_item_clickable, R.id.txtitem, arrayList);
list.setAdapter(arrayAdapter);
Run Code Online (Sandbox Code Playgroud)
listview 的布局来自 list_item_clickable.xml 和里面的 textiview "txtitem":
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:text="TextView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/txtitem"
android:textColor="@android:color/white"
android:background="@android:drawable/editbox_dropdown_dark_frame"
android:textAlignment="center" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
这个结构在很多类中都有效,就像 Textview 所说的,textcolor 总是白色,但现在我需要根据文本的值(有时是白色,有时是红色)更改列表视图内的文本颜色。那么,如何添加此更改而不会对所有应用程序的其余代码产生很大影响????
感谢您的任何建议!
我有一个RecyclerView显示字符串的垂直列表:
Row0
Row1
Row2
Row3
Row4
...
Run Code Online (Sandbox Code Playgroud)
我正在使用该函数recyclerView.scrollToPosition(position);跳转到一行。但是,我想要跳转到的行最终位于视图的底部!
例如,如果我这样做,recyclerView.scrollToPosition(17);我会得到:
Row13
Row14
Row15
Row16
Row17 <--- 17 is at bottom (last visible row)
Run Code Online (Sandbox Code Playgroud)
我想要的是:
Row17 <-- 17 to be on top (first visible row)
Row18
Row19
Row20
Row21
Run Code Online (Sandbox Code Playgroud)
我怎样才能实现这个目标?
我一直试图建立一个简单onClickListener的Android活动,扩展ListActivity.
在create方法的这个类中,我创建了一个微调器对象,当用户选择一个项时,将arrayAdapter创建一个列表项,具体取决于用户选择的内容(从游标请求填充).这是在同一个类中的另一个方法中生成的.
ArrayAdapter<String> playerAdapter = new ArrayAdapter<String>(this,
R.layout.match_update_rows, R.id.player_name, playerItems);
setListAdapter(playerAdapter);
Run Code Online (Sandbox Code Playgroud)
我正在尝试在这个新列表上添加一个点击监听器.我已经添加了:
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
Intent i = new Intent(this, PlayerFixtureScore.class);
i.putExtra("RowId", id);
startActivity(i);
}
Run Code Online (Sandbox Code Playgroud)
但是,我收到了错误protected void onListItemClick.
Multiple markers at this line
- Syntax error on token ")", ; expected
- Syntax error on token ",", ; expected
- Duplicate local variable position
- Syntax error on token …Run Code Online (Sandbox Code Playgroud) 所以我收到一个错误,因为我的Custom ArrayAdapter getView方法提供的位置超出了列表中的项目数.例如,当我有一个项目时,它返回到此活动后返回1的位置.
编辑:
private class CustomAdapter extends ArrayAdapter<LinearLayout>{
public CustomAdapter(Context context, int resources, List<LinearLayout> objects){
super(context, resources, objects);
}
public View getView(int position, View convertView, ViewGroup parent){
LinearLayout row;
LayoutInflater mInflater = getLayoutInflater();
if (convertView == null){
row = getItem(position);
}
else{
row = (LinearLayout) mInflater.inflate(R.layout.list_row, null);
TextView name = (TextView) row.findViewById(R.id.text1);
name.setText(settingList.get(position).name);
TextView value = (TextView) row.findViewById(R.id.text2);
value.setText(settingList.get(position).value);
}
return row;
}
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试在列表行中显示单独的项目.所以我使用了4个textviews.但我使用arrayadapter扩展Activity.现在我必须根据textview将字符串列表放在一行中.怎么做到这一点?任何帮助都非常感谢,并提前感谢...
我试图让几个微调器根据之前的微调器选择动态改变.我可以更新列表但是当我使用adapter.clear()时它会崩溃.这是我的代码:
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.TextView;
public class CarKitsAct extends Activity{
ArrayAdapter<String> adMod, adEd;
String[] models, edition;
Boolean initSpMan = true;
Boolean initSpMod = true;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.carkitslayout);
// Construct TextViews
TextView textMan = (TextView) findViewById(R.id.textMan);
textMan.setText(R.string.selectmanufacturer);
TextView textMod = (TextView) findViewById(R.id.textMod);
textMod.setText(R.string.selectmodel);
TextView textEd = (TextView) findViewById(R.id.textEd);
textEd.setText(R.string.selectedition);
// Construct Spinners
Spinner spMan = (Spinner) findViewById(R.id.spMan);
Spinner spMod …Run Code Online (Sandbox Code Playgroud) 如何为listview项添加不同/ alretnate颜色?下面是我使用ArrayAdapter向ListView添加项目的代码
list = (ListView)findViewById(R.id.planetList);
adapter = new ArrayAdapter<String>(MyListViewActivity.this, R.layout.my_list_row, R.id.planetNameTextView);
for (int i = 0; i < planetNamesArray.length; i++) {
adapter.add(planetNamesArray[i]);
}
list.setAdapter(adapter);
Run Code Online (Sandbox Code Playgroud)
任何人都可以指导我使用ArrayAdapter添加不同的背景颜色,因为我是Android的新手
android background-color android-arrayadapter android-listview
我实际上试图用文本过滤我的ListView.
如果我输入内容,结果会被过滤,但如果我再次删除我键入的文本,则列表为空.:(
你知道我怎么解决这个问题吗?
这是迄今为止的代码:
public class ResultsArrayAdapter extends ArrayAdapter<SuchErgebnis> {
Context myContext;
int layoutResourceId;
ArrayList<SuchErgebnis> ergebnisListeOriginal = null;
ArrayList<SuchErgebnis> ergebnisListeGefiltert = null;
private Filter filter;
public ResultsArrayAdapter(Context context, int textViewResourceId,
ArrayList<SuchErgebnis> objects) {
super(context, textViewResourceId, objects);
this.myContext = context;
this.layoutResourceId = textViewResourceId;
this.ergebnisListeOriginal = objects;
this.ergebnisListeGefiltert = objects;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row = convertView;
ErgebnisHolder eHolder = null;
SuchErgebnis ergebnis = ergebnisListeGefiltert.get(position);
if (row == null) // Wird zum ersten Mal …Run Code Online (Sandbox Code Playgroud) 我正在做一个项目,我想在ListView中显示联系人名称列表.从本地sqli db中检索名称.到目前为止,我已设法检索名称并使用标准ArrayAdapter类显示它们.
但是为了更多控制,我正在尝试创建自己的适配器,以允许我在每一行上显示控制按钮.我对这段代码感到困惑:
private void fillData() {
Cursor mContactsCursor = mDbAdapter.getAllContacts();
startManagingCursor(mContactsCursor);
String [] from = new String[] {ContactsDbAdapter.COLUMN_FNAME, ContactsDbAdapter.COLUMN_LNAME};
int [] to = new int [] { R.id.fname, R.id.lname};
//What variables should constructor take?
adapter = new ContactsListAdapter(this, from, to);
data.setAdapter(adapter);
}
Run Code Online (Sandbox Code Playgroud)
基本上我不知道如何将这些值传递给构造函数或者我是否应该这样做?
String [] from = new String[] {ContactsDbAdapter.COLUMN_FNAME, ContactsDbAdapter.COLUMN_LNAME};
int [] to = new int [] { R.id.fname, R.id.lname};
Run Code Online (Sandbox Code Playgroud)
这是我的ContactsListAdapter类:
public class ContactsListAdapter extends ArrayAdapter<Contact> {
private List<Contact> contacts;
private Button deleteBtn;
private Button editBtn;
private TextView …Run Code Online (Sandbox Code Playgroud) 我试图制作一个只有图像而没有分隔符的列表视图,所以它看起来像一张大图.
这是适配器的代码:
public class ImageListAdapter extends ArrayAdapter<String> {
private final Context context;
private final int[] ImageValue;
private ImageView image;
public ImageListAdapter(Context context, int[] imageValue) {
super(context, R.layout.image_list_item);
this.context = context;
this.ImageValue = imageValue;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View rowView;
rowView = inflater.inflate(R.layout.image_list_item, parent, false);
image = (ImageView) rowView.findViewById(R.id.image);
image.setImageDrawable(context.getResources().getDrawable(ImageValue[position]));
return rowView;
}
Run Code Online (Sandbox Code Playgroud)
}
这是image_list_item XML:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<ImageView
android:layout_width="match_parent"
android:layout_height="wrap_content" >
Run Code Online (Sandbox Code Playgroud)
这是主要活动:
public …Run Code Online (Sandbox Code Playgroud)