第一次SharedPreferences与GridView一起使用 [英] First time SharedPreferences use with GridView

查看:247
本文介绍了第一次SharedPreferences与GridView一起使用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是我的Apps Screenshoot:



GridView中有两个按钮:+/-。



所以我要试试的是当我按下+按钮或 - 按钮时,数量是存储在SharedPreferences中。



但真的很困惑。



到目前为止,这是我的代码:

  package com.android.customer_blanjapasar.Utility; 

导入android.content.Context;
导入android.content.SharedPreferences;
导入android.preference.PreferenceManager;
导入android.text.Editable;
导入android.text.TextWatcher;
导入android.view.LayoutInflater;
导入android.view.View;
导入android.view.ViewGroup;
导入android.widget.ArrayAdapter;
导入android.widget.BaseAdapter;
导入android.widget.Button;
导入android.widget.ImageView;
导入android.widget.TextView;

import com.android.customer_blanjapasar.R;
import com.squareup.picasso.Picasso;

import java.util.ArrayList;
import java.util.List;

/ **
*由Leon于2016/5/3创建。
* /
public class CustomGridView2 extends BaseAdapter {
private ArrayList< ListItem>的ListData;
私人LayoutInflater layoutInflater;
私有上下文上下文;
private String [] imageUrls;
private int count = 0;
int arrayCount [];
SharedPreferences首选项;
SharedPreference sharedPreference;
public CustomGridView2(Context context,ArrayList< ListItem> listData){
this.listData = listData;
layoutInflater = LayoutInflater.from(context);
this.context = context;
sharedPreference = new SharedPreference();
}

@Override
public int getCount(){
return listData.size();
}

@Override
public Object getItem(int position){
return listData.get(position);
}

@Override
public long getItemId(int position){
return position;
}

public ViewView(final int position,View convertView,ViewGroup parent){
final ViewHolder持有者;
if(convertView == null){
convertView = layoutInflater.inflate(R.layout.afterlogin_product_gridview,null);
holder = new ViewHolder();
holder.headlineView =(TextView)convertView.findViewById(R.id.nama_produk);
holder.teaserView =(TextView)convertView.findViewById(R.id.harga);
holder.imageView =(ImageView)convertView.findViewById(R.id.img_produk);
holder.cmdMinus =(Button)convertView.findViewById(R.id.btn_min);
holder.cmdPlus =(Button)convertView.findViewById(R.id.btn_plus);
holder.qty =(TextView)convertView.findViewById(R.id.lbl_qty);
convertView.setTag(holder);

} else {
holder =(ViewHolder)convertView.getTag();
}

ListItem newsItem = listData.get(position);
String satuan = newsItem.getSatuan()。toString();
String harga = newsItem.getReporterName()。toString();
harga =Rp。+ harga +/+ satuan;
holder.headlineView.setText(newsItem.getHeadline()。toUpperCase());
holder.teaserView.setText(harga);

String a = newsItem.getUrl();
holder.cmdPlus.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){$ b $ count = Integer.parseInt(holder.qty.getText ().toString());
count ++;
holder.qty.setText(+ count);
}
});

holder.cmdMinus.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){$ b $ count = Integer.parseInt(holder如果(count == 0){
holder.qty.setText(0);
}
else {
count--;
holder.qty.setText(+ count);
}
}
});

if(holder.imageView!= null){
// new ImageDownloaderTask(holder.imageView).execute(newsItem.getUrl());
Picasso
.with(context)
.load(a)
.fit()
.into(holder.imageView);
}



return convertView;
}

静态类ViewHolder {
TextView headlineView;
TextView teaserView;
ImageView imageView;
TextView satuan,qty;
按钮cmdPlus,cmdMinus;
}

}

我已经看到教程。但我仍然感到困惑。请引导我一步一步。



编辑



这是ListItem.class :

  public class ListItem {

private String headline;
private String reporterName;
私人字符串kode;
私人字符串网址;
私人字符串satuan;

public String getUrl(){
return url;
}

public void setUrl(String url){
this.url = url;
}

public String getHeadline(){
return headline;
}

public void setHeadline(String headline){
this.headline = headline;
}

public String getReporterName(){
return reporterName;
}

public void setReporterName(String reporterName){
this.reporterName = reporterName;
}

public String getKode(){
return kode;
}

public void setKode(String kode){
this.kode = kode;
}

public String getSatuan(){
return satuan;
}

public void setSatuan(string satuan){
this.satuan = satuan;
}

@Override
public String toString(){
return[headline =+ headline +,reporter Name =+ reporterName +,date =+ kode +];


$ / code $ / pre

这是MainActivity.class中的代码: / p>

  public class AfterLogin_Produk extends Activity {
活动活动;
ImageButton btn_resep,btn_product;
static int jArray;
GridView product_gridview;
static String [] nama_prdct;
static String [] img_prdct;
static String [] harga_prdct;
static String [] satuan_prdct;
静态字符串kode_ktgr;
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
@Override
protected void onCreate(Bundle savedInstanceState){
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
super.onCreate(savedInstanceState);
setContentView(R.layout.after_login_produk_main);
product_gridview =(GridView)findViewById(R.id.product_gridview);
new GetLength()。execute();
}

public ArrayList< ListItem> getListData(){
ArrayList< ListItem> listMockData = new ArrayList< ListItem>();

for(int i = 0; i< jArray; i ++){
ListItem newsData = new ListItem();
newsData.setUrl(img_prdct [i]);
newsData.setHeadline(nama_prdct [i]);
newsData.setReporterName(harga_prdct [i]);
newsData.setSatuan(satuan_prdct [i]);
listMockData.add(newsData);
}
return listMockData;
}


类GetLength扩展AsyncTask< String,String,String> {
字符串nama_product,img_product,harga_product,satuan_product;
JSONParser2 jParser = new JSONParser2();
ArrayList< String> list_nama_produk = new ArrayList< String>();
ArrayList< String> list_img_produk = new ArrayList< String>();
ArrayList< String> list_harga_produk = new ArrayList< String>();
ArrayList< String> list_satuan_produk = new ArrayList< String>();
protected String doInBackground(String ... params){
try {
List< NameValuePair> param = new ArrayList< NameValuePair>();
param.add(new BasicNameValuePair(kode_kategori,kode_ktgr));
JSONObject json = jParser.makeHttpRequest(http:xxx.php,POST,param);
JSONArray array = json.getJSONArray(categories);
jArray = array.length();
for(int i = 0; i< array.length(); i ++){
JSONObject row = array.getJSONObject(i);
nama_product = row.getString(nama_produk);
img_product = row.getString(img_produk);
harga_product = row.getString(harga_satuan);
satuan_product = row.getString(nama_satuan);
list_nama_produk.add(nama_product);
list_img_produk.add(img_product);
list_harga_produk.add(harga_product);
list_satuan_produk.add(satuan_product);
}
} catch(Exception e){
System.out.println(Exception:+ e.getMessage());
}
返回null;


@Override
protected void onPostExecute(String s){
super.onPostExecute(s);
//Toast.makeText(getBaseContext(),\"Value:+ list_nama_kategori,Toast.LENGTH_SHORT).show();
nama_prdct = new String [list_nama_produk.size()];
img_prdct = new String [list_img_produk.size()];
harga_prdct = new String [list_harga_produk.size()];
satuan_prdct = new String [list_satuan_produk.size()];
nama_prdct = list_nama_produk.toArray(nama_prdct);
img_prdct = list_img_produk.toArray(img_prdct);
harga_prdct = list_harga_produk.toArray(harga_prdct);
satuan_prdct = list_satuan_produk.toArray(satuan_prdct);
ArrayList< ListItem> listData = getListData();
product_gridview.setAdapter(new CustomGridView2(AfterLogin_Produk.this,listData));


$ b


解决方案

您的问题在这里:

  holder.qty.setText(store); 

在您的错误日志中明确指出:


android.content.res.Resources $ NotFoundException:字符串资源ID
在android.content.res.Resources.getText(Resources.java:1409)处的0x1位于android.widget .TextView setText (TextView.java:4943)


store code>是一个整数,setText正在尝试使用此id查找资源。

  holder.qty.setText(store.toString()); 

另外,为了减少共享首选项特定代码的复杂性,您可以使用这个图书馆


This is my Apps Screenshoot :

There is two button in that GridView : +/-.

So what im gonna try is when i press "+" button or "-" button, the quantity is store in SharedPreferences.

But really im confused about this.

This is my code so far :

package com.android.customer_blanjapasar.Utility;

    import android.content.Context;
    import android.content.SharedPreferences;
    import android.preference.PreferenceManager;
    import android.text.Editable;
    import android.text.TextWatcher;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.ArrayAdapter;
    import android.widget.BaseAdapter;
    import android.widget.Button;
    import android.widget.ImageView;
    import android.widget.TextView;

    import com.android.customer_blanjapasar.R;
    import com.squareup.picasso.Picasso;

    import java.util.ArrayList;
    import java.util.List;

    /**
     * Created by Leon on 5/3/2016.
     */
    public class CustomGridView2 extends BaseAdapter {
        private ArrayList<ListItem> listData;
        private LayoutInflater layoutInflater;
        private Context context;
        private String[] imageUrls;
        private int count = 0;
        int arrayCount[];
        SharedPreferences prefs ;
        SharedPreference sharedPreference;
        public CustomGridView2(Context context, ArrayList<ListItem> listData) {
            this.listData = listData;
            layoutInflater = LayoutInflater.from(context);
            this.context = context;
            sharedPreference = new SharedPreference();
        }

        @Override
        public int getCount() {
            return listData.size();
        }

        @Override
        public Object getItem(int position) {
            return listData.get(position);
        }

        @Override
        public long getItemId(int position) {
            return position;
        }

        public View getView(final int position, View convertView, ViewGroup parent) {
            final ViewHolder holder;
            if (convertView == null) {
                convertView = layoutInflater.inflate(R.layout.afterlogin_product_gridview, null);
                holder = new ViewHolder();
                holder.headlineView = (TextView) convertView.findViewById(R.id.nama_produk);
                holder.teaserView = (TextView) convertView.findViewById(R.id.harga);
                holder.imageView = (ImageView) convertView.findViewById(R.id.img_produk);
                holder.cmdMinus = (Button) convertView.findViewById(R.id.btn_min);
                holder.cmdPlus = (Button) convertView.findViewById(R.id.btn_plus);
                holder.qty = (TextView) convertView.findViewById(R.id.lbl_qty);
                convertView.setTag(holder);

            } else {
                holder = (ViewHolder) convertView.getTag();
            }

            ListItem newsItem = listData.get(position);
            String satuan = newsItem.getSatuan().toString();
            String harga = newsItem.getReporterName().toString();
            harga = "Rp. " + harga + " / " + satuan;
            holder.headlineView.setText(newsItem.getHeadline().toUpperCase());
            holder.teaserView.setText(harga);

            String a = newsItem.getUrl();
            holder.cmdPlus.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    count = Integer.parseInt( holder.qty.getText().toString());
                    count++;
                    holder.qty.setText(""+count);
                }
            });

            holder.cmdMinus.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    count = Integer.parseInt( holder.qty.getText().toString());

                    if(count == 0) {
                        holder.qty.setText("0");
                    }
                    else {
                        count--;
                        holder.qty.setText("" + count);
                    }
                }
            });

            if (holder.imageView != null) {
                //new ImageDownloaderTask(holder.imageView).execute(newsItem.getUrl());
                Picasso
                        .with(context)
                        .load(a)
                        .fit()
                        .into(holder.imageView);
            }



            return convertView;
        }

        static class ViewHolder {
            TextView headlineView;
            TextView teaserView;
            ImageView imageView;
            TextView satuan,qty;
            Button cmdPlus,cmdMinus;
        }

    }

I already see this tutorial. But im still getting confused. Please guide me step by step.

EDIT

This is ListItem.class :

public class ListItem {

    private String headline;
    private String reporterName;
    private String kode;
    private String url;
    private String satuan;

    public String getUrl() {
        return url;
    }

    public void setUrl(String url) {
        this.url = url;
    }

    public String getHeadline() {
        return headline;
    }

    public void setHeadline(String headline) {
        this.headline = headline;
    }

    public String getReporterName() {
        return reporterName;
    }

    public void setReporterName(String reporterName) {
        this.reporterName = reporterName;
    }

    public String getKode() {
        return kode;
    }

    public void setKode(String kode) {
        this.kode = kode;
    }

    public String getSatuan() {
        return satuan;
    }

    public void setSatuan(String satuan) {
        this.satuan = satuan;
    }

    @Override
    public String toString() {
        return "[ headline=" + headline + ", reporter Name=" + reporterName + " , date=" + kode + "]";
    }
}

And this is the code inside MainActivity.class :

public class AfterLogin_Produk extends Activity {
    Activity activity;
    ImageButton btn_resep,btn_product;
    static int jArray;
    GridView product_gridview;
    static String[] nama_prdct;
    static String[] img_prdct;
    static String[] harga_prdct;
    static String[] satuan_prdct;
    static String kode_ktgr;
    @TargetApi(Build.VERSION_CODES.LOLLIPOP)
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        this.requestWindowFeature(Window.FEATURE_NO_TITLE);
        super.onCreate(savedInstanceState);
        setContentView(R.layout.after_login_produk_main);
        product_gridview = (GridView) findViewById(R.id.product_gridview);
        new GetLength().execute();
    }

public ArrayList<ListItem> getListData() {
        ArrayList<ListItem> listMockData = new ArrayList<ListItem>();

        for (int i = 0; i < jArray; i++) {
            ListItem newsData = new ListItem();
            newsData.setUrl(img_prdct[i]);
            newsData.setHeadline(nama_prdct[i]);
            newsData.setReporterName(harga_prdct[i]);
            newsData.setSatuan(satuan_prdct[i]);
            listMockData.add(newsData);
        }
        return listMockData;
    }


class GetLength extends AsyncTask<String, String, String> {
        String nama_product,img_product,harga_product,satuan_product;
        JSONParser2 jParser = new JSONParser2();
        ArrayList<String> list_nama_produk = new ArrayList<String>();
        ArrayList<String> list_img_produk = new ArrayList<String>();
        ArrayList<String> list_harga_produk = new ArrayList<String>();
        ArrayList<String> list_satuan_produk = new ArrayList<String>();
        protected String doInBackground(String... params) {
            try {
                List<NameValuePair> param = new ArrayList<NameValuePair>();
                param.add(new BasicNameValuePair("kode_kategori", kode_ktgr));
                JSONObject json = jParser.makeHttpRequest("http:xxx.php", "POST", param);
                JSONArray array = json.getJSONArray("categories");
                jArray = array.length();
                for (int i = 0; i < array.length(); i++) {
                    JSONObject row = array.getJSONObject(i);
                    nama_product = row.getString("nama_produk");
                    img_product = row.getString("img_produk");
                    harga_product = row.getString("harga_satuan");
                    satuan_product = row.getString("nama_satuan");
                    list_nama_produk.add(nama_product);
                    list_img_produk.add(img_product);
                    list_harga_produk.add(harga_product);
                    list_satuan_produk.add(satuan_product);
                }
            } catch (Exception e) {
                System.out.println("Exception : " + e.getMessage());
            }
            return null;
        }

        @Override
        protected void onPostExecute(String s) {
            super.onPostExecute(s);
            //Toast.makeText(getBaseContext(),"Value : " + list_nama_kategori,Toast.LENGTH_SHORT).show();
            nama_prdct = new String[list_nama_produk.size()];
            img_prdct = new String[list_img_produk.size()];
            harga_prdct = new String[list_harga_produk.size()];
            satuan_prdct = new String[list_satuan_produk.size()];
            nama_prdct = list_nama_produk.toArray(nama_prdct);
            img_prdct = list_img_produk.toArray(img_prdct);
            harga_prdct = list_harga_produk.toArray(harga_prdct);
            satuan_prdct = list_satuan_produk.toArray(satuan_prdct);
            ArrayList<ListItem> listData = getListData();
            product_gridview.setAdapter(new CustomGridView2(AfterLogin_Produk.this, listData));

        }
    }

解决方案

Your issue is here:

holder.qty.setText(store);

It is clearly pointed out in your error log:

android.content.res.Resources$NotFoundException: String resource ID 0x1 at android.content.res.Resources.getText(Resources.java:1409) at android.widget.TextView.setText(TextView.java:4943)

store is an integer and setText is trying to look for a resource with this id. Use this instead.

holder.qty.setText(store.toString());

Also, to reduce the complexity of shared preferences specific code you can use this library

这篇关于第一次SharedPreferences与GridView一起使用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆