android检查项目是否被点击

android检查项目是否被点击,第1张

概述我刚刚开始使用 Android编程,这就是问题所在. 如何检查GridView中的项目是否已被点击?比如为Grid中的EACH项目分配一个布尔’clicked’并在每次单击该项时更改它的值. 目前我只是使用一个bool数组,所以如果我点击项目[x]它会切换bool [x]然后我会检查它是否为true / false并相应地修改项目,但必须有一个更简洁的方式这样做! 我的代码: package co 我刚刚开始使用 Android编程,这就是问题所在.

如何检查GrIDVIEw中的项目是否已被点击?比如为GrID中的EACH项目分配一个布尔’clicked’并在每次单击该项时更改它的值.

目前我只是使用一个bool数组,所以如果我点击项目[x]它会切换bool [x]然后我会检查它是否为true / false并相应地修改项目,但必须有一个更简洁的方式这样做!

我的代码:

package com.example.mojrecnik;import java.io.BufferedReader;import java.io.file;import java.io.fileReader;import java.io.IOException;import androID.os.Bundle;import androID.os.Environment;import androID.app.Activity;import androID.content.Context;import androID.vIEw.LayoutInflater;import androID.vIEw.Menu;import androID.vIEw.MenuItem;import androID.vIEw.VIEw;import androID.vIEw.VIEwGroup;import androID.Widget.ArrayAdapter;import androID.Widget.GrIDVIEw;import androID.Widget.AdapterVIEw;import androID.Widget.TextVIEw;import androID.Widget.Toast;import androID.support.v4.app.NavUtils;public class Glavna extends Activity implements AdapterVIEw.OnItemClickListener {    private static final int LENGTH_SHORT = 0;    GrIDVIEw grID;    TextVIEw tekst;    String[] izfajla = new String[200];    String[] izfajla2 = new String[200];    boolean[] kliknutmrs = new boolean[200];    @OverrIDe    public voID onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentVIEw(R.layout.activity_glavna);        grID=(GrIDVIEw)findVIEwByID(R.ID.grID);        grID.setAdapter(new MojAdapter());        grID.setonItemClickListener(this);        //tekst=(TextVIEw)findVIEwByID(R.ID.tekst);        citaFajl();    }    @OverrIDe    public boolean onCreateOptionsMenu(Menu menu) {        getMenuInflater().inflate(R.menu.activity_glavna,menu);        return true;    }    public voID onItemClick(AdapterVIEw<?> arg0,VIEw arg1,int arg2,long arg3) {        TextVIEw klik = (TextVIEw)arg1.findVIEwByID(R.ID.grIDtekst2);        if(kliknutmrs[arg2]) {            kliknutmrs[arg2]=!kliknutmrs[arg2];            klik.setText(izfajla[arg2]); }        else {            kliknutmrs[arg2]=!kliknutmrs[arg2];            klik.setText(izfajla2[arg2]); }    }    public voID onnothingSelected(AdapterVIEw<?> arg0) {    }    public voID citaFajl() {        file kartica = Environment.getExternalStorageDirectory();        file fajl = new file(kartica,"reci.txt");        StringBuilder tekst = new StringBuilder();        int i=0;        try {            BufferedReader br = new BufferedReader(new fileReader(fajl));            String linija;            String[] prva;            while ((linija = br.readline())!=null) {                prva = linija.split("-");                izfajla[i]=prva[0];                if(prva[1].length()>0)                    izfajla2[i]=prva[1];                i++;            }        }        catch (IOException e) {            Toast greska = Toast.makeText(this,e.getMessage().toString(),LENGTH_SHORT);            greska.show();        }    }    private class MojAdapter extends ArrayAdapter {        public MojAdapter() {            super(Glavna.this,R.layout.grIDvju,izfajla);        }        public VIEw getVIEw(int position,VIEw convertVIEw,VIEwGroup parent) {            //vazno!! pravim vju od inflatera i vracam vju a ne convertvju!            VIEw grIDvju;            if(convertVIEw==null) {                LayoutInflater inflater = getLayoutInflater();                grIDvju = inflater.inflate(R.layout.grIDvju,parent,false);            }            else                grIDvju=convertVIEw;            TextVIEw tekst2 = (TextVIEw)grIDvju.findVIEwByID(R.ID.grIDtekst2);            tekst2.setlines(2);            tekst2.setText(izfajla[position]);            return(grIDvju);        }    }}

和XML(主要):

<relativeLayout xmlns:androID="http://schemas.androID.com/apk/res/androID"    xmlns:tools="http://schemas.androID.com/tools"    androID:layout_wIDth="match_parent"    androID:layout_height="match_parent" ><!--      <TextVIEw        androID:ID="@+ID/tekst"        androID:layout_wIDth="fill_parent"        androID:layout_height="wrap_content"        androID:layout_alignParentleft="true"        androID:layout_alignParenttop="true"        androID:textSize="20dp"        androID:layout_below="@ID/tekst" >    </TextVIEw> -->    <GrIDVIEw        androID:ID="@+ID/grID"        androID:layout_wIDth="fill_parent"        androID:layout_height="wrap_content"        androID:layout_alignParentleft="true"        androID:horizontalSpacing="@dimen/padding_medium"        androID:numColumns="3"        androID:stretchMode="columnWIDth" >    </GrIDVIEw></relativeLayout>

和布局:

<?xml version="1.0" enCoding="utf-8"?><linearLayout     xmlns:androID="http://schemas.androID.com/apk/res/androID"    androID:layout_wIDth="match_parent"    androID:layout_height="wrap_content"    androID:orIEntation="vertical" >    <TextVIEw        xmlns:androID="http://schemas.androID.com/apk/res/androID"        androID:layout_wIDth="wrap_content"        androID:layout_height="wrap_content"        androID:ID="@+ID/grIDtekst2" /></linearLayout>
解决方法 以下是我最终的工作方式.我创建了一个自定义类来包含显示的文本,并在其中添加了一个bool,所以现在grIDvIEw中的每个元素都有自己的“点击检查器”.
注意:这个程序简单地在onClick之间交替显示2个单词,如果你想尝试使用带有数据格式化’word1 – word2’的文本文件

码:

package com.example.mojrecnik;import java.io.BufferedReader;import java.io.file;import java.io.fileReader;import java.io.IOException;import java.util.ArrayList;import java.util.List;import androID.os.Bundle;import androID.os.Environment;import androID.app.Activity;import androID.vIEw.LayoutInflater;import androID.vIEw.Menu;import androID.vIEw.VIEw;import androID.vIEw.VIEwGroup;import androID.Widget.ArrayAdapter;import androID.Widget.GrIDVIEw;import androID.Widget.AdapterVIEw;import androID.Widget.TextVIEw;import androID.Widget.Toast;public class Glavna extends Activity implements AdapterVIEw.OnItemClickListener {    private static final int LENGTH_LONG = 1;    GrIDVIEw grID;    List<Rec> lReci = new ArrayList<Rec>(); //this is our List of data which contains text and bool check    @OverrIDe    public voID onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentVIEw(R.layout.activity_glavna);        citaFajl();        grID=(GrIDVIEw)findVIEwByID(R.ID.grID);        grID.setAdapter(new MojAdapter());        grID.setonItemClickListener(this);    }    @OverrIDe    public boolean onCreateOptionsMenu(Menu menu) {        getMenuInflater().inflate(R.menu.activity_glavna,long arg3) {        VjuHolder holder=(VjuHolder)arg1.getTag();        if(!lReci.get(arg2).clicked)            holder.text.setText(lReci.get(arg2).rec2);        else            holder.text.setText(lReci.get(arg2).rec1);        lReci.get(arg2).clicked = !lReci.get(arg2).clicked;    }    public voID onnothingSelected(AdapterVIEw<?> arg0) {        //////////////////////////////////////////    }    public voID citaFajl() {        try {            BufferedReader br = new BufferedReader(new fileReader(new file(Environment.getExternalStorageDirectory(),"reci.txt")));            String[] reci = new String[2];            String linija;            Rec rec;            while ((linija = br.readline()) != null) {                reci = linija.split("-"); //because data in my file is formatted 'word1 - word2',we separate them Now so we can alternate between them                reci[1]=reci[1].trim();                rec = new Rec(reci[0],reci[1],false);                lReci.add(rec);            }        }        catch (IOException e) {            Toast.makeText(this,LENGTH_LONG).show();        }    }    private class MojAdapter extends ArrayAdapter<String> {        public MojAdapter() {            super(Glavna.this,R.layout.grIDvju);        }        public int getCount() {            return lReci.size(); //here we explicitly set the total number of grID elements so it doesn't go out of index range        }        public VIEw getVIEw(int position,VIEwGroup parent) {            VjuHolder holder;            if(convertVIEw==null) {                LayoutInflater inflater = getLayoutInflater();                convertVIEw = inflater.inflate(R.layout.grIDvju,false);                holder = new VjuHolder();                holder.text = (TextVIEw)convertVIEw.findVIEwByID(R.ID.grIDtekst2);                convertVIEw.setTag(holder); }            else                holder=(VjuHolder)convertVIEw.getTag();                if(lReci.get(position).clicked) //check to make grID update according to the clicked state of our elements [when scrolling]                    holder.text.setText(lReci.get(position).rec2);                else                    holder.text.setText(lReci.get(position).rec1);                holder.text.setlines(2);            return(convertVIEw);        }    }}//holder classclass VjuHolder {    TextVIEw text;}//here we put the text to be displayed along with bool to check in which state is the clicked elementclass Rec {    String rec1,rec2;    boolean clicked;    Rec(String rec,String druga,boolean klik) {        rec1 = rec;        rec2 = druga;        clicked = klik;    }}
总结

以上是内存溢出为你收集整理的android检查项目是否被点击全部内容,希望文章能够帮你解决android检查项目是否被点击所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1126639.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-30
下一篇2022-05-30

发表评论

登录后才能评论

评论列表(0条)

    保存