我是编程的新手,我正在android中做一个测试项目,虽然我已经有了一些练习。但是现在我有一些障碍(可能稍后会出现一些),我似乎无法解锁。以下是我可以回答的前两个问题:
在相同的活动中并使用相同的列表视图,是否可以在一个视图中单击,并获取列表视图,其中包含从所选视图下载的一系列信息?我在辅助活动中使用SQLite。我可以使用“Intent”将数据从活动传递到另一个活动,但我无法进行同一活动。
在制作arrayAdapter并使用ViewHolder时,是否可以将数组图像归属于不同的resource.id?我试图将R.id与conc.X.setText()连接起来(这样图像将根据该持有者中的数据进行分发)但我无法做到。
这是适配器类
public class PecasAdaptador extends ArrayAdapter<Peca> {
private final Context context;
private final Peca[] values;
static class ViewHolder {
public TextView versao;
public TextView preco;
public TextView potencia;
public ImageView foto;
}
public PecasAdaptador(Context context, Peca[] values) {
super(context, -1, values);
this.context = context;
this.values = values;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View rowView;
LayoutInflater inflater = LayoutInflater.from(context);
rowView = inflater.inflate(R.layout.peca, null);
ViewHolder viewHolder = new ViewHolder();
viewHolder.versao = (TextView) rowView.findViewById(R.id.versao);
viewHolder.potencia = (TextView) rowView.findViewById(R.id.potencia);
viewHolder.preco = (TextView) rowView.findViewById(R.id.novorobot5);
rowView.setTag(viewHolder);
ViewHolder holder = (ViewHolder) rowView.getTag();
holder.versao.setText(values[position].getVersao());
holder.potencia.setText(Aplicacao.recursos.getQuantityString(R.plurals.potencia, values[position].getPotencia()));
holder.preco.setText(Aplicacao.recursos.getQuantityString(R.plurals.preco, values[position].getPreco()));
holder.foto.setImageResource(values[position].getFoto());
return rowView;
}
}
这是活动类
public class NovoRobotActivity extends AppCompatActivity {
PecasHelper helper = new PecasHelper(this);
String nometipo;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_novo_robot);
Button NovaPeca = (Button) findViewById(R.id.novorobot3);
final ArrayAdapter tipos = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, helper.listaTipos());
final PecasAdaptador versoes = new PecasAdaptador(this, helper.listaVersoes(nometipo));
final ListView listapecas = (ListView) findViewById(R.id.lista);
NovaPeca.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
listapecas.setAdapter(tipos);
listapecas.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> tipos, View view, int i, long l) {
TextView t = (TextView) view;
nometipo = t.getText().toString();
listapecas.setAdapter(versoes);
}
});
}
});
}
}
答案 0 :(得分:1)
每当您使用ArrayAdapter
时RecyclerView或ListView
您必须更改要传递给适配器构造函数的数组或数组列表。
因此,当您单击列表项时,更新要传递给适配器的数组列表,然后更新活动中的adaptername.notifydatasetchanged()
方法。
只需单击列表视图项即可使用新列表更新适配器。