我正在尝试使用一些ImageButton创建一个GridView,但我无法对这些ImageButton进行onClick。我希望获得这些点击以打开其他活动/片段,但我无法获得ImageButton的位置。
如何才能获得ImageButton的位置?
GridView的
适配器XML
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/llPrincipal">
<ImageButton
android:id="@+id/ibPlano"
android:layout_width="100dp"
android:layout_height="100dp"
android:scaleType="fitXY"
android:background="#00000000"
android:focusable="false"
/>
<TextView
android:id="@+id/tvPlano"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:gravity="center"
/>
</LinearLayout>
PrincipalFrag
public class PrincipalFrag extends Fragment implements View.OnClickListener, AdapterView.OnItemClickListener{
private List<Permissoes> permissoesTela = new ArrayList<Permissoes>();
private GridView gridView;
private PrincipalAdapter principalAdapter;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.principal_frag, container, false);
gridView = (GridView)view.findViewById(R.id.gridView);
return view;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
principalAdapter = new PrincipalAdapter(getView().getContext(), getPermissoesTela());
gridView.setAdapter(principalAdapter);
}
@Override
public void onClick(View v) {
}
private List<Permissoes> getPermissoesTela(){
////agenda, despesa, enviar, alterar estoque bloqueados
Usuario usuario = KontroleConfigs.PESSOA;
//venda
Permissoes venda = new Permissoes();
venda.setVenda(usuario.getPlano().getPermissoes().getVenda());
//agenda
Permissoes agenda = new Permissoes();
agenda.setAgenda(usuario.getPlano().getPermissoes().getAgenda());
//cadastro
Permissoes cadastro = new Permissoes();
cadastro.setCadastro(1);
//despesas
Permissoes despesas = new Permissoes();
despesas.setLancamento_dispesas(usuario.getPlano().getPermissoes().getLancamento_dispesas());
//enviar
Permissoes enviar = new Permissoes();
enviar.setEnviar_relatorio_txt(usuario.getPlano().getPermissoes().getEnviar_relatorio_txt());
//meus dados
Permissoes meusDados = new Permissoes();
meusDados.setMeusDados(1);
//recebimentos pendentes
Permissoes recebimentosPendentes = new Permissoes();
recebimentosPendentes.setRecebimentos_pendentes(usuario.getPlano().getPermissoes().getRecebimentos_pendentes());
//entregas pendentes
Permissoes entregasPendentes = new Permissoes();
entregasPendentes.setEntregas_pendentes(usuario.getPlano().getPermissoes().getEntregas_pendentes());
//alterar estoque
Permissoes alterarEstoque = new Permissoes();
alterarEstoque.setAlterar_estoque(usuario.getPlano().getPermissoes().getAlterar_estoque());
permissoesTela.add(venda);
permissoesTela.add(agenda);
permissoesTela.add(cadastro);
permissoesTela.add(despesas);
permissoesTela.add(enviar);
permissoesTela.add(meusDados);
permissoesTela.add(recebimentosPendentes);
permissoesTela.add(entregasPendentes);
permissoesTela.add(alterarEstoque);
return permissoesTela;
}
@Override
public void onPause() {
super.onPause();
CustomVolleySingleton.getInstance().cancelPendingRequests(CustomVolleySingleton.TAG);
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Log.i("POSITION BUTTON IN GRID VIEW->", position + "");
}
}
PrincipalAdapter
public class PrincipalAdapter extends BaseAdapter {
private Context context;
private List<Permissoes> lista;
public PrincipalAdapter(Context context, List<Permissoes> lista) {
this.context = context;
this.lista = lista;
}
@Override
public int getCount() {
return lista.size();
}
@Override
public Object getItem(int position) {
return lista.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder;
Usuario usuario = KontroleConfigs.PESSOA;
if (convertView == null) {
viewHolder = new ViewHolder();
LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.principal_adapter, parent, false);
viewHolder.llPrincipal = (LinearLayout) convertView.findViewById(R.id.llPrincipal);
viewHolder.ibPlano = (ImageButton) convertView.findViewById(R.id.ibPlano);
viewHolder.tvPlano = (TextView) convertView.findViewById(R.id.tvPlano);
convertView.setTag(viewHolder);
}else{
viewHolder = (ViewHolder)convertView.getTag();
}
//permissoes
Permissoes p = lista.get(position);
//plano lite
////agenda, despesa, enviar, alterar estoque bloqueados
if(usuario.getPlano().getNome().contains("Bronze Lite")){
if(p.getVenda() != null){
if(p.getVenda() > 0){
viewHolder.ibPlano.setImageResource(R.drawable.vendas);
viewHolder.ibPlano.setEnabled(true);
}else{
viewHolder.ibPlano.setImageResource(R.drawable.vendas_2);
viewHolder.ibPlano.setEnabled(false);
}
viewHolder.tvPlano.setText("Vendas");
}else if(p.getAgenda() != null){
if(p.getAgenda() > 0){
viewHolder.ibPlano.setImageResource(R.drawable.agenda);
viewHolder.ibPlano.setEnabled(true);
}else{
viewHolder.ibPlano.setImageResource(R.drawable.agenda_2);
viewHolder.ibPlano.setEnabled(false);
}
viewHolder.tvPlano.setText("Agendas");
}else if(p.getCadastro() != null){
if(p.getCadastro() > 0){
viewHolder.ibPlano.setImageResource(R.drawable.cadastro);
viewHolder.ibPlano.setEnabled(true);
}else{
viewHolder.ibPlano.setImageResource(R.drawable.cadastro_2);
viewHolder.ibPlano.setEnabled(false);
}
viewHolder.tvPlano.setText("Cadastro");
}else if(p.getLancamento_dispesas() != null){
if(p.getLancamento_dispesas() > 0){
viewHolder.ibPlano.setImageResource(R.drawable.despesas);
viewHolder.ibPlano.setEnabled(true);
}else{
viewHolder.ibPlano.setImageResource(R.drawable.despesas_2);
viewHolder.ibPlano.setEnabled(false);
}
viewHolder.tvPlano.setText("Despesas");
}else if(p.getEnviar_relatorio_txt() != null){
if(p.getEnviar_relatorio_txt() > 0){
viewHolder.ibPlano.setImageResource(R.drawable.enviar);
viewHolder.ibPlano.setEnabled(true);
}else{
viewHolder.ibPlano.setImageResource(R.drawable.enviar_2);
viewHolder.ibPlano.setEnabled(false);
}
viewHolder.tvPlano.setText("Enviar");
}else if(p.getMeusDados() != null){
if(p.getMeusDados() > 0){
viewHolder.ibPlano.setImageResource(R.drawable.meus_dados);
viewHolder.ibPlano.setEnabled(true);
}else{
viewHolder.ibPlano.setImageResource(R.drawable.meus_dados_2);
viewHolder.ibPlano.setEnabled(false);
}
viewHolder.tvPlano.setText("Meus Dados");
}else if(p.getRecebimentos_pendentes() != null){
if(p.getRecebimentos_pendentes() > 0){
viewHolder.ibPlano.setImageResource(R.drawable.recebimentos_pendentes);
viewHolder.ibPlano.setEnabled(true);
}else{
viewHolder.ibPlano.setImageResource(R.drawable.recebimentos_pendentes_2);
viewHolder.ibPlano.setEnabled(true);
}
viewHolder.tvPlano.setText("Recebimentos Pendentes");
}else if(p.getEntregas_pendentes() != null){
if(p.getEntregas_pendentes() > 0){
viewHolder.ibPlano.setImageResource(R.drawable.entregas_pendentes);
viewHolder.ibPlano.setEnabled(true);
}else{
viewHolder.ibPlano.setImageResource(R.drawable.entregas_pendentes_2);
viewHolder.ibPlano.setEnabled(true);
}
viewHolder.tvPlano.setText("Entregas Pendentes");
}else if(p.getAlterar_estoque() != null){
if(p.getAlterar_estoque() > 0){
viewHolder.ibPlano.setImageResource(R.drawable.alterar_estoque);
viewHolder.ibPlano.setEnabled(true);
}else{
viewHolder.ibPlano.setImageResource(R.drawable.alterar_estoque_2);
viewHolder.ibPlano.setEnabled(true);
}
viewHolder.tvPlano.setText("Alterar Estoque");
}
}//final plano lite
return convertView;
}
/** pattern view holder */
private static class ViewHolder{
LinearLayout llPrincipal;
ImageButton ibPlano;
TextView tvPlano;
}
}
答案 0 :(得分:1)
在getView()
方法中为您的ImageButton设置onClick,如下所示:
viewHolder.ibPlano.setOnClickListener(new OnClickListener(){
public void onClick(View v){
// you can get position of clicked item here(you have it in getView argument)
}
});