【问题标题】:How to create a pagination for dynamically created table layout using set visible?如何使用 set visible 为动态创建的表格布局创建分页?
【发布时间】:2014-03-25 16:30:09
【问题描述】:

我正在从服务器获取数据并为该响应动态创建表格布局,现在我只需要每页显示 5 行,我正在使用 setvisible(view.invisible) 隐藏所有表格行,如何设置 5 行 @987654322 @ 显示分页之类的行?

我用来动态创建表格的代码如下。

TableLayout tableLayout = (TableLayout) findViewById(R.id.tablenew);
         TableRow tableRow = new TableRow(this);
         tableRow.setId(1);
         tableRow.setBackgroundColor(Color.LTGRAY);
         tableRow.setPadding(0,0,1,1);
         tableRow.setLayoutParams(new TableLayout.LayoutParams());
         tableRow.setVisibility(View.INVISIBLE);
         TextView text = new TextView(this);
         text.setText(name);
         text.setBackgroundColor(Color.WHITE);
         text.setPadding(5, 5, 5, 5);
         text.setTextSize(30);
         text.setLayoutParams(new TableRow.LayoutParams());
         final Button button = new Button(this);
         button.setPadding(5, 5, 5, 5);
         button.setTextSize(30);
         button.setTag(value);
         button.setText("Install");
         button.setLayoutParams(new TableRow.LayoutParams());
         button.setOnClickListener(new View.OnClickListener() 
         {
               @Override
               public void onClick(View v) 
                {
                        TableLayout tableLayout = (TableLayout)        findViewById(R.id.tablenew);
                    final TableRow parent = (TableRow) v.getParent();
                    tableLayout.removeView(parent);
                          String id=(String) v.getTag();

                 }
          });//button click listener
         tableRow.addView(text);
         tableRow.addView(button);
         tableLayout.addView(tableRow);

【问题讨论】:

  • 你要做什么?多解释一下
  • @MD - 我需要使用 setvisible(view.visible) 以编程方式使用行索引在每页显示 5 行。
  • @MD-最初我需要使用 setvisible(view.visible) 显示表的前 5 行,如果用户单击下一步按钮,则需要隐藏可见行并进行下一个可见 5 行。
  • 请在此处发布您的 xml 文件
  • @jayesh 我正在以编程方式创建表格布局。不是通过 xml 文件

标签: android pagination android-tablelayout


【解决方案1】:

试试这个代码:

tableraw.xml

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<TableLayout
    android:id="@+id/tablenew"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_above="@+id/next"
    android:layout_alignParentTop="true" >
</TableLayout>

<Button
    android:id="@+id/next"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_centerHorizontal="true"
    android:text="next" />

</RelativeLayout>

TableViewDemo.java

package com.test;

import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TableLayout;
import android.widget.TableRow;
import android.widget.TextView;

public class TableViewDemo extends Activity {

int index = 5;
Button nextButton;
TableLayout tableLayout;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.tableraw);
    tableLayout = (TableLayout) findViewById(R.id.tablenew);
    nextButton = (Button) findViewById(R.id.next);

    for (int i = 1; i <= 20; i++) {

        TableRow tableRow = new TableRow(this);
        tableRow.setTag(i);
        tableRow.setBackgroundColor(Color.LTGRAY);
        tableRow.setPadding(0, 0, 1, 1);
        tableRow.setLayoutParams(new TableLayout.LayoutParams());

        TextView text = new TextView(this);
        text.setText("name" + i);
        text.setBackgroundColor(Color.WHITE);
        text.setPadding(5, 5, 5, 5);
        text.setTextSize(30);
        text.setLayoutParams(new TableRow.LayoutParams());

        final Button button = new Button(this);
        button.setPadding(5, 5, 5, 5);
        button.setTextSize(30);
        button.setTag("value");
        button.setText("Install" + i);
        button.setLayoutParams(new TableRow.LayoutParams());
        tableRow.addView(text);
        tableRow.addView(button);

        if (i < 6) {
            tableRow.setVisibility(View.VISIBLE);
        } else {
            tableRow.setVisibility(View.GONE);
        }

        tableLayout.addView(tableRow);

    }

    nextButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            for (int i = 0; i < 20; i++) {

                TableRow parent = (TableRow) tableLayout.getChildAt(i);
                // tableLayout.removeView(parent);
                Integer id = ((Integer) parent.getTag());
                if (id > index && id <= (index + 5)) {
                    parent.setVisibility(View.VISIBLE);
                } else {
                    parent.setVisibility(View.GONE);
                }
            }
            index = index + 5;

        }
    });

}
}

【讨论】:

  • 非常欢迎您.... :) 但您可以使用浏览量指示器代替.. 它非常适合分页
  • 为什么不鼓励使用ListViewListView 在有很多行要显示时有效地处理内存...
  • @ jayesh 实际上我不知道页面视图指示器..如何将它用于这个概念。
  • @Gopal Rao 在列表视图中只能滚动但分页?
  • 你可以从这个链接下载demo github.com/JakeWharton/Android-ViewPagerIndicator
【解决方案2】:
         prev.setOnClickListener(new View.OnClickListener() 
           {
                   @Override
                   public void onClick(View v) 
                   {
                           TableLayout tl = (TableLayout) findViewById(R.id.tablenew);
               for (int i = 10; i < tl.getChildCount(); i--)
               {

                   if(i>0)
                   {
                           TableRow row = (TableRow) tl.getChildAt(i);
                           Integer id = ((Integer) row.getTag());
                   if (id < 11 && id <= (10 - 5)) //index - 5)) {
                   {
                           Log.d("iiiiiiiiiiiiiiiii",Integer.toString(i));
                       row.setVisibility(View.VISIBLE);
                   } 
                   else 
                   {
                           Log.d("aaaaaaaaaaaaaaaaaaa",Integer.toString(i));
                       row.setVisibility(View.GONE);
                   }
                   }

               }
               //index = index - 5;

           }
           });

【讨论】:

  • @jayesh 我已经尝试过像这样的上一个按钮代码,但是当 i 值达到 0 时它不会停止,请建议我..
【解决方案3】:
prev.setOnClickListener(new View.OnClickListener() 
    {
        @Override
        public void onClick(View v) 
        {
            TableLayout tl = (TableLayout) findViewById(R.id.tablenew);
            for (int i = 6; i > 0; i--)
            {
                Log.d("aaaaaaaaaaaaaaaaaaa",Integer.toString(index));
                TableRow row = (TableRow) tl.getChildAt(i);
                Integer id = ((Integer) row.getTag());

                if (id < index && id <= (index - 3)) //index - 3)) {
                {
                    Log.d("iiiiiiiiiiiiiiiii",Integer.toString(i));
                    row.setVisibility(View.VISIBLE);
                } 
                else 
                {
                    Log.d("aaaaaaaaaaaaaaaaaaa",Integer.toString(i));
                    row.setVisibility(View.GONE);
                }

            }
            index = index - 3;
        }
    });

【讨论】:

    【解决方案4】:
    public class Tabledemo extends Activity {
    int index = 5;
    int i,preval,preival;
    int nexval=1;
    Button prev,next;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_tabledemo);
        session = new SessionManager(getApplicationContext());
        prev = (Button) findViewById(R.id.pre);
        next = (Button) findViewById(R.id.nex);
    
        prev.setOnClickListener(new View.OnClickListener() 
        {
            @Override
            public void onClick(View v) 
            {
                TableLayout tl = (TableLayout) findViewById(R.id.tablenew);
                for (i = preval ; i > preival; i--)
                {
                    TableRow row = (TableRow) tl.getChildAt(i);
                    Integer id = ((Integer) row.getTag());
    
                    if (id < index && id <= (index - 5))
                    {
                        row.setVisibility(View.VISIBLE);
                        nexval=i;
                    } 
                    else 
                    {
                        row.setVisibility(View.GONE);
                    }
    
                }
                preival=preival-5;
                index = index - 5;
            } 
        });
    
    
         next.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v)
                {
                    TableLayout tl = (TableLayout) findViewById(R.id.tablenew);
                    for (i = nexval; i < tl.getChildCount() ; i++)
                    {
                        TableRow row = (TableRow) tl.getChildAt(i);
                        Integer id = ((Integer) row.getTag());
                        if (id > index && id <= (index + 5)) 
                        {
                            row.setVisibility(View.VISIBLE);
                            preval=i;
                        } 
                        else
                        {
                            row.setVisibility(View.GONE);
                        }
                    }
                    preival=index;
                    preival=preival-5;
                    index = index + 5;
                }
            });
    

    【讨论】:

      【解决方案5】:

      试试this,他们已经用示例代码解释了..

      【讨论】:

        猜你喜欢
        • 2021-12-22
        • 2012-01-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-09-17
        相关资源
        最近更新 更多