首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android -使用setText setText TextView按钮循环TextView项目

Android -使用setText setText TextView按钮循环TextView项目
EN

Stack Overflow用户
提问于 2016-12-08 07:04:03
回答 3查看 666关注 0票数 0

我试图从go*gle中找到任何教程,但我仍然没有找到我需要的东西。

我创建了这样的布局:

代码语言:javascript
复制
|------------------|
| 1.TextView       |
| * * * * *        |
|------------------|
| 2.TextView       |
| * * * * *        |
|------------------|
| 3.TextView       |
| * * * * *        |
|------------------|
|                  |
| Btn | TextView   |

但我希望当button按下时,它正在收集每个列表中的任何项目,setText到TextView的方式如下:

代码语言:javascript
复制
|-------------------------|
| 1.TextView              |
| * * * * *               |
|-------------------------|
| 2.TextView              |
| * * *                   |
|-------------------------|
| 3.TextView              |
| * * * *                 |
|-------------------------|
|                         |
| Btn |"No : 1 - Star = 5"|
|      "No : 2 - Star = 3"|
|      "No : 3 - Star = 4"|
|-------------------------|

我只需要用下面的代码setText一个列表:

代码语言:javascript
复制
kirim.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            float tanya = adapter2.getItem(3).getRatingStar(); //getItem("list id")
            TextView Star = (TextView) findViewById(R.id.star);
            if (Star != null) {
                Star.setText("Star : "+tanya);
            }
        }
    });

我尝试过循环,但是我不知道应该做什么来获取id并对ListView的每个列表进行估值。

我坚持了这段代码,还没有修复错误

代码语言:javascript
复制
kirim.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            float bintang = adapter2.getItem(3).getRatingStar();
            TextView Star = (TextView) findViewById(R.id.star);
            for(int i = 0; i<=adapter2.getCount(); i++)
                Star.setText("id 1" + i + "\nStar : "+bintang);
        }
    });

有什么想法或参考可以让我读一下代码流吗?

编辑

PertanyaanAdapter.java

代码语言:javascript
复制
class PertanyaanAdapter extends ArrayAdapter<Pertanyaan> {

    private AppCompatActivity activity;
    private List<Pertanyaan> movieList;

    PertanyaanAdapter(AppCompatActivity context, int resource, List<Pertanyaan> objects) {
        super(context, resource, objects);
        this.activity = context;
        this.movieList = objects;
    }

    @Override
    public Pertanyaan getItem(int position) {
        return movieList.get(position);
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder holder;
        LayoutInflater inflater = (LayoutInflater) activity.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);

        if (convertView == null) {
            convertView = inflater.inflate(R.layout.item_listview, parent, false);
            holder = new ViewHolder(convertView);
            convertView.setTag(holder);

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

        holder.ratingBar.setOnRatingBarChangeListener(onRatingChangedListener(position));

        holder.ratingBar.setTag(position);
        holder.ratingBar.setRating(getItem(position).getRatingStar());
        holder.movieName.setText(getItem(position).getAsk());

        return convertView;
    }

    private RatingBar.OnRatingBarChangeListener onRatingChangedListener(final int position) {
        return new RatingBar.OnRatingBarChangeListener() {
            @Override
            public void onRatingChanged(RatingBar ratingBar, float v, boolean b) {
                Pertanyaan item = getItem(position);
                assert item != null;
                item.setRatingStar(v);
                Log.i("Adapter", "star: " + v);
            }
        };
    }

    private static class ViewHolder {
        private RatingBar ratingBar;
        private TextView movieName;

        ViewHolder(View view) {
            ratingBar = (RatingBar) view.findViewById(R.id.rate_img);
            movieName = (TextView) view.findViewById(R.id.text);
        }
    }
}

Pertanyaan.java

代码语言:javascript
复制
package flix.yudi.pertanyaan3;
public class Pertanyaan {

    private float ratingStar;
    private String ask;

    Pertanyaan(int ratingStar, String ask) {
        this.ratingStar = ratingStar;
        this.ask = ask;
    }

    float getRatingStar() {
        return ratingStar;
    }

    void setRatingStar(float ratingStar) {
        this.ratingStar = ratingStar;
    }

    public String getAsk() {
        return ask;
    }

}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-12-08 07:23:19

内部onClick()

代码语言:javascript
复制
int size = adapter2.getCount();
StringBuilder builder = new StringBuilder();
for (int i = 0; i < size; i++) {
    builder.append("No : " + (i + 1) + " - " + "Star = " + adapter2.getItem(i).getRatingStar() + "\n");
}
TextView Star = (TextView) findViewById(R.id.star);
star.setText(builder.toString());
票数 0
EN

Stack Overflow用户

发布于 2016-12-08 08:52:33

问题是setText在循环内部发生。因此,使用StringBuilder在循环中使用append()和after循环出口准备文本:

代码语言:javascript
复制
    kirim.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            TextView Star = (TextView) findViewById(R.id.star);
            StringBuilder text = new StringBuilder();
            for(int i = 0; i<=adapter2.getCount(); i++) {
                float bintang = adapter2.getItem(i).getRatingStar();
                text.append("id 1" + i + "\nStar : " + bintang);
            }
            Star.setText(text);
        }
    });

现在,将数据发送到MySQL?如果您指的是数据库,则需要创建一个名为“create”的列并插入该行。

票数 1
EN

Stack Overflow用户

发布于 2016-12-08 07:29:14

您将需要一个垂直方向的linear layout,可以在这个线性布局中动态地添加textView,并使用for loop在新创建的textView上显示listView数据。它将为您提供所需的输出。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41033655

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档