我是新手编程人员,并且正在做一个android测试项目,虽然我已经有了一些练习。但是现在我有一些障碍(可能稍后会出现一些障碍),我似乎无法解除阻止。这里是我的第一个2个问题,任何人都可以回答:安卓系统 - 关于列表视图的问题
在同一个活动和使用相同的listview,是否有可能在一个视图中点击,并获得一个信息数组,填充它的后裔选择的视图?我在助手活动中使用SQLite。我可以使用“意图”将活动中的数据传递给其他活动,但我无法参与同一活动。
在制作数组适配器和使用ViewHolder时,是否可以将数组映像归入不同的resource.id?我试图将R.id与一个holder.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);
}
});
}
});
}
}
你说“路障”,但你没有发布你试过的代码,以及你认为出错的地方。建议检查[我如何问一个好问题](http://stackoverflow.com/help/how-to-ask)。 – Tigger
您不应将该适配器或该项目的单击侦听器设置在该按钮内点击侦听器。此外,切换适配器,当你点击一个项目似乎是一个奇怪的设计 –
@ cricket_007我必须在适配器内设置按钮,因为我想按钮来启动列表视图。此外,我不想更改活动,因为我想看到图像被插入到listview以外的活动中。 – Adato