我有用于列表视图,其内部包括复选框5次定制arrayadapter,在这里,我要实现的选择列表视图中所有的复选框,并取消所有复选框,我试着用getchildat()的方法oncreate(),onresume()以及onpostcreate同时,但不做出运气给我.如果你能告诉我解决方案,我很感激.
@Override
public void onPostCreate(Bundle savedInstanceState){
super.onPostCreate(savedInstanceState);
Button selectall=(Button) findViewById(R.id.allselect);
selectall.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
int count = listview.getCount();
System.out.println("the count is "+count);
for (int i = 0; i < listview.getLastVisiblePosition() - listview.getFirstVisiblePosition(); i++) {
RelativeLayout itemLayout = (RelativeLayout)listview.getChildAt(i);
CheckBox cb = (CheckBox)itemLayout.findViewById(R.id.chkbx);
cb.setChecked(true);
}
}
});
}
Run Code Online (Sandbox Code Playgroud)
Arrayadapter类
@SuppressWarnings("unchecked")
public MultipleLeadSyncAdapter(Context context, String[] values,String[] values1,List<Model> qrcode ,String[] values3,String[] values4,String[] values5) {
super(context, R.layout.multipleselectlist, values1);
this.context = context; …Run Code Online (Sandbox Code Playgroud) 页脚视图的末尾不显示页脚视图.请告诉我哪里出错了.足迹的代码是:
footerView = ((LayoutInflater)getBaseContext()
.getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(
R.layout.listfooter, null, false);
list.addFooterView(footerView);
footerView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
}
});
Run Code Online (Sandbox Code Playgroud)
整个代码:
public class CustomizedListView extends Activity {
// All static variables
static final String URL = "https://itunes.apple.com/us/rss/topalbums/limit=20/json";
// XML node keys
static final String KEY_SONG = "song"; // parent node
static final String KEY_ID = "id";
static final String KEY_TITLE = "title";
static final String KEY_ARTIST = "artist";
static final String KEY_DURATION = "duration";
static …Run Code Online (Sandbox Code Playgroud) 我正在尝试修改我在 stackoverflow 上看到的 AutoCompleteTextView 的代码,以便为 MultiAutoCompleteTextView 返回多个联系人。
但是,当我将它加载到我的 Android 手机上时,我再也看不到任何可供选择的建议。我感觉问题出在 ArrayAdapter 初始化上,但我无法弄清楚它有什么问题。
在此先感谢您的帮助。
我的 multiautocompletetextview 有以下代码:
<MultiAutoCompleteTextView
android:id="@+id/mmWhoNo"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textColor="#0000A0"
android:hint="Choose your Contacts" />
Run Code Online (Sandbox Code Playgroud)
最后,我有以下内容可以阅读我的联系人,这些联系人是从自动完成文本视图中选择联系人并稍加修改后获得的。
private ArrayList<Map<String, String>> mPeopleList;
private ArrayAdapter mAdapter;
private MultiAutoCompleteTextView mTxtPhoneNo;
mPeopleList = new ArrayList<Map<String, String>>();
PopulatePeopleList();
mTxtPhoneNo = (MultiAutoCompleteTextView) findViewById(R.id.mmWhoNo);
mTxtPhoneNo.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer());
mTxtPhoneNo.setThreshold(1);
//just to check to see that mPeopleList is being populated
Log.i("Multiplecontacts",mPeopleList.get(0).toString());
mAdapter = new ArrayAdapter<ArrayList<Map<String,String>>>(this, android.R.layout.simple_dropdown_item_1line);
mAdapter.add(mPeopleList);
mTxtPhoneNo.setAdapter(mAdapter);
mTxtPhoneNo
.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> av, View arg1, …Run Code Online (Sandbox Code Playgroud) android autocompletetextview android-arrayadapter contactscontract
我有一个普通的ListView:
<ListView
android:id="@android:id/list"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:dividerHeight="10dp" />
Run Code Online (Sandbox Code Playgroud)
然后用Alert对象的ArrayList填充该listview:
// Get ListView object from XML
listView = (ListView) findViewById(android.R.id.list);
// Create a new Adapter
ArrayAdapter<Alert> adapter = new ArrayAdapter<Alert>(this, android.R.layout.activity_list_item, android.R.id.text1, DataSourceHandler.getAlertsList());
// Assign adapter to ListView
listView.setAdapter(adapter);
Run Code Online (Sandbox Code Playgroud)
DataSourceHandler.getAlertsList()向我返回对象的ArrayList,在我的ListView中,我现在看到类似以下两项:
这两个Alert对象具有一个名为getName()的方法,该方法返回一个String,我希望将其用作列表中该项目的显示名称,而不是上面的内容。
我怎样才能做到这一点?
我有包含三个片段的 minidemo。一个显示两个TextView和一个editview直接,下一个使用自定义适配器将相同的布局视为列表中的行,第三个显示一个带有标准适配器的普通列表(simple_list_item_1)
活动使用标准主题(Theme.AppCompat.Light.DarkActionBar),我没有修改。
我本来希望所有三个块的样式都相似。相反,带有自定义适配器的第二个块似乎根本没有根据浅色主题进行样式设置。(见文末截图)
理想情况下,我希望自定义列表的行的样式类似于第一个块。或者,我想应用第三个块的样式。但是,所有字体和背景似乎都有些偏色,我不确定如何找出当前用作主题一部分的内容。因此,通过手动分配文本颜色、大小、背景等来修复中间块的样式不是一种选择。
整个演示请参考MiniDemo
这是 item_row.xml 布局文件(顶层相对布局标签好像被编辑器剥离了。完整布局请到gitlab)
<TextView android:text="large"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:textAppearanceLarge"
android:id="@+id/text1_field" />
<TextView android:text="large inverse"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/text2_field"
android:textAppearance="?android:attr/textAppearanceLargeInverse"
android:layout_centerHorizontal="true" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="number"
android:ems="5"
android:id="@+id/edit_field"
android:layout_alignParentRight="true" />
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
自定义片段。同样,完整版在gitlab 上
public class CustomItemFragment extends ListFragment {
String[] DATA = new String[] {"foo1", "foo2", "foo3"};
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ItemAdapter adapter = new ItemAdapter(this.getActivity().getApplicationContext(), DATA);
setListAdapter(adapter);
}
Run Code Online (Sandbox Code Playgroud)
}`
适配器(gitlab):
public class …Run Code Online (Sandbox Code Playgroud) android listview android-appcompat android-arrayadapter android-theme
所以我试图在我的代码中访问 getResources(),但由于某种原因,它不断收到未解析的引用。我正在另一个类中为我的阵列适配器执行此操作。是因为我没有 main 方法还是因为其他原因?总的来说,我对 android dev 和 kotlin 有点陌生,所以任何帮助都将不胜感激。
class ForecastAdapter(val forecast: Forecast) : RecyclerView.Adapter<ForecastData>(){
override fun getItemCount(): Int {
return forecast.list.count()
}
override fun onCreateViewHolder(p0: ViewGroup, p1: Int): ForecastData {
val layoutInflator = LayoutInflater.from(p0?.context)
val cellForRow = layoutInflator.inflate(R.layout.weather_row, p0, false)
return ForecastData(cellForRow)
}
override fun onBindViewHolder(p0: ForecastData, p1: Int) {
val drawableId: Int = getResources().getIdentifier("my_drawable", "drawable", getPackageName())
val getWeather = forecast.list[p1]
val clouds = getWeather.weather[0]
val getDateTime = forecast.list[p1]
var getIcon = forecast.list[p1]
var icon = getIcon.weather[0]
p0.view.textView_text_clouds.text = …Run Code Online (Sandbox Code Playgroud)我正在尝试在 AndroidStudio (Kotlin) 中创建下拉列表 (Spinner)。
所以,我convert_from_spinner在我的 Activity 上创建。然后我尝试将值添加到列表中,但 IDE 给了我一个错误:
package com.currency_converter.ui.home
import android.app.Activity
import android.content.ClipData
import android.os.Bundle
import android.util.Log
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.Toast
import androidx.fragment.app.Fragment
import androidx.lifecycle.ViewModelProviders
import com.currency_converter.R
import kotlinx.android.synthetic.main.fragment_home.*
import android.content.ClipboardManager
import android.content.Context
import android.text.TextWatcher
import android.widget.ArrayAdapter
import android.widget.Spinner
import androidx.core.content.ContextCompat.getSystemService
//
class HomeFragment : Fragment() {
private lateinit var homeViewModel: HomeViewModel
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
homeViewModel =
ViewModelProviders.of(this).get(HomeViewModel::class.java)
val root = inflater.inflate(R.layout.fragment_home, …Run Code Online (Sandbox Code Playgroud) 虽然我很清楚我无法在onClick方法中引用非final变量,但我很想知道如何解决我目前面临的问题.
我有一个ArrayAdapter.如果用户按下AsyncTask复选框,则用户可以订阅或取消订阅队列,具体取决于是否选中该复选框.
我希望此状态反映在我的txtStatus TextView文本中的每个项目中.如何根据复选框的状态设置TextView的文本?
以下是我的getView方法代码的一部分:
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
View row = convertView;
final CheckBox queueCBox;
userControl = new UserController(context);
final String queueName = data[position].label;
if(row == null)
{
LayoutInflater inflater = ((Activity)context).getLayoutInflater();
row = inflater.inflate(layoutResourceId, parent, false);
final QueueHolder holder = new QueueHolder();
holder.queuecbox = (CheckBox)row.findViewById(R.id.queues_item_checkbox);
queueCBox = (CheckBox)row.findViewById(R.id.queues_item_checkbox);
holder.txtLabel = (TextView)row.findViewById(R.id.queues_item_label);
holder.txtStatus = (TextView)row.findViewById(R.id.queues_item_status);
holder.queuecbox.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
final String[] param = new String[1];
param[0] = queueName; …Run Code Online (Sandbox Code Playgroud) 我知道这已经解决了一百万次,是的,我已经搜索过,但它对我不起作用.
问题是方法super不需要正确的参数.
代码:
public class QuotesArrayAdapter extends ArrayAdapter<Map<Integer,List<String>>> {
private Context context;
Map<Integer,List<String>> Values;
static int textViewResId;
Logger Logger;
public QuotesArrayAdapter(Context context, int textViewResourceId, Map<Integer,List<String>> object) {
super(context, textViewResourceId, object); //<---- ERROR HERE
this.context = context;
this.Values = object;
Logger = new Logger(true);
Logger.l(Logger.TAG_DBG, "ArrayAdapter Inited");
}
Run Code Online (Sandbox Code Playgroud)
Eclipse说的是什么:
Multiple markers at this line
- The constructor ArrayAdapter<Map<Integer,List<String>>>(Context, int, Map<Integer,List<String>>)
is undefined
- The constructor ArrayAdapter<Map<Integer,List<String>>>(Context, int, Map<Integer,List<String>>)
is undefined
Run Code Online (Sandbox Code Playgroud)
它想要超级(Context,int),这不是我想要的
我有一个扩展arrayAdapter类.我试图将变量添加到列表中,但我不确定如何这样做.这是我目前的ArrayAdapter类.
class Item {
String username;
String number;
String content;
}
class ListAdapter extends ArrayAdapter<Item> {
public ListAdapter(Context context, int textViewResourceId) {
super(context, textViewResourceId);
// TODO Auto-generated constructor stub
}
private List<Item> items;
public ListAdapter(Context context, int resource, List<Item> items)
{
super(context, resource, items);
this.items = items;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
if (v == null) {
LayoutInflater vi;
vi = LayoutInflater.from(getContext());
v = vi.inflate(R.layout.list_item, null);
}
final Item p …Run Code Online (Sandbox Code Playgroud)