gpt4 book ai didi

android - 带有文本和图标的微调器

转载 作者:搜寻专家 更新时间:2023-11-01 08:14:52 24 4
gpt4 key购买 nike

在我的应用程序中,我有一个 Spinner,它可以填充两个 ArrayStrings,存储在我的 中values/strings.xml 资源。根据两个 RadioButton 的状态,从正确的 Array 中选择值并填充我的 Spinner。

对于每个字符串数组,我都有一个大小相同的图标数组。我所有的图标都以“A”开头,后面跟着一个数字。我无法更改它,它像那样存储在数据库中。我在 Strings.xml 中有一个数组,其中包含绘制图标所需的所有数字。所有实际图标都可以在 drawable 资源文件夹中找到。

现在我想在微调器选择的列表中的字符串旁边显示相应的项目。选择项目后,我只需要查看文本即可。

我已经在 Internet 上搜索了一个很好的教程,但是根据我的发现,我并没有成功地做到这一点。我刚刚开始 Android 编程,所以我想我需要一点帮助。我希望有人能指导我正确的方向。

我将我的字符串数组放在实际数组中,例如:

// Arrays with each function in text
arbeiderjobs = getResources().getStringArray(R.array.arbeiders);
bediendejobs = getResources().getStringArray(R.array.bediende);

// Arrays with each function ID
arbeiderjobsid = getResources().getIntArray(R.array.arbeidersid);
bediendejobsid = getResources().getIntArray(R.array.bediendeid);

当其中一个 RadioButton 被选中时,我使用以下事件处理程序代码:

// RadioButton 'Arbeider': If a value gets chosen in this list, 
// the corresponding ID is put in the below variable
RadioButton rbArbeider = (RadioButton) findViewById(R.id.rbArbeider);
rbArbeider.setOnCheckedChangeListener(new OnCheckedChangeListener()
{
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
{
if (isChecked)
{
showSpinner(arbeiderjobs, R.id.cmbFuncties);
s.setOnItemSelectedListener(new OnItemSelectedListener()
{
public void onItemSelected(AdapterView<?> parentView,
View selectedItemView, int position, long id)
{
functie = arbeiderjobsid[position];
statuut = 1;
visible = false;
}
});

visible = true;
}
} // s.setOnItemSelectedListener

}); // rbArbeider.setOnCheckedChangeListener

这是我的showSpinner 方法:

private void showSpinner(String [] jobs, int id)
{
MyCustomAdapter adapter = new MyCustomAdapter
(
FindJob.this,
R.layout.spinnerrow,
jobs
);

adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

for (int i = 0; i < jobs.length; i++)
{
adapter.add(jobs[i]);
}

Spinner s = (Spinner) findViewById(id);
s.setClickable(true);
s.setAdapter(adapter);
}

我已经根据 this tutorial 制作了一个自定义适配器,但我有点纠结......我需要一些帮助:

public class MyCustomAdapter extends ArrayAdapter<String>
{

public MyCustomAdapter(Context context, int textViewResourceId,
String[] objects)
{
super(context, textViewResourceId, objects);
}

@Override
public View getDropDownView(int position, View convertView, ViewGroup parent)
{
return getCustomView(position, convertView, parent,
arbeiderjobs, arbeiderjobsid);
}

@Override
public View getView(int position, View convertView, ViewGroup parent)
{
return getCustomView(position, convertView, parent,
arbeiderjobs, arbeiderjobsid);
}

public View getCustomView(int position, View convertView, ViewGroup parent,
String jobs[], int jobsid[])
{
// return super.getView(position, convertView, parent);

LayoutInflater inflater = getLayoutInflater();
View row = inflater.inflate(R.layout.spinnerrow, parent, false);
TextView label = (TextView) findViewById(R.id.functie);
label.setText(jobs[position]);

ImageView icon = (ImageView) row.findViewById(R.id.icon);

String uri = "@drawable/a" + jobsid[position];
int imageResource = getResources().getIdentifier
(
uri,
null,
getPackageName()
);
icon.setImageResource(imageResource);

if (visible)
{
icon.setVisibility(View.GONE);
}

return row;
}

}

这就是我想要的样子:

Result

最佳答案

您需要实现自定义适配器并为列表项定义自定义布局。 Check this tutorial .

更新

尝试以下操作。我没有测试代码,但我认为它应该像那样工作。

public class MyCustomAdapter extends ArrayAdapter<String>{

private String[] mIcons;

public MyCustomAdapter(Context context, int textViewResourceId,
String[] objects, String[] icons) {
super(context, textViewResourceId, objects);
mIcons = icons;
}

@Override
public View getDropDownView(int position, View convertView, ViewGroup parent) {
return getCustomView(position, convertView, parent);
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
return getCustomView(position, convertView, parent);
}

public View getCustomView(int position, View convertView, ViewGroup parent) {

LayoutInflater inflater=getLayoutInflater();
View row=inflater.inflate(R.layout.spinnerrow, parent, false);
TextView label=(TextView) findViewById(R.id.functie);
label.setText(getItem(position);

ImageView icon=(ImageView)row.findViewById(R.id.icon);

String uri = "@drawable/a" + mIcons[position];
int imageResource = getResources().getIdentifier(uri, null, getPackageName());
icon.setImageResource(imageResource);

return row;
}
}

关于android - 带有文本和图标的微调器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5744065/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com