如何在android中通过JSON获取Textview字段中的文本?

如何在android中通过JSON获取Textview字段中的文本?,android,Android,我正在开发android应用程序,其中有12个动态帧布局,其中帧布局上有文本视图、视频和播放/暂停按钮。我想通过JSON获取文本视图字段中的文本。但我的问题是,当我在文本视图中使用JSON获取文本时,文本将出现在第12帧中,而第11帧的其余部分为空。我不知道如何解决此问题。请帮助我 public class MainActivity extends Activity { String moviename; private ProgressDialog pDialog; VideoView vv

我正在开发android应用程序,其中有12个动态帧布局,其中帧布局上有文本视图、视频和播放/暂停按钮。我想通过JSON获取文本视图字段中的文本。但我的问题是,当我在文本视图中使用JSON获取文本时,文本将出现在第12帧中,而第11帧的其余部分为空。我不知道如何解决此问题。请帮助我

public class MainActivity extends Activity {

String moviename;
private ProgressDialog pDialog;
VideoView vv;
TextView showingat, movie;
FrameLayout frame;
ArrayList<String> abc;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.navigationbar);

    abc = new ArrayList<>();
    new Theaterflow().execute();
    //Main Relative layout.
    final RelativeLayout rl = (RelativeLayout)findViewById(R.id.MainRelativeLayout);
    //Main Scrollview.
    final ScrollView sv = (ScrollView) findViewById(R.id.scrollView);
    //Main Linearlayout.
    final LinearLayout ll = (LinearLayout) findViewById(R.id.LinearLayout1);

    //Dynamically creation of Layouts.
    FrameLayout.LayoutParams playpausebtn = new FrameLayout.LayoutParams(70, 70);
    FrameLayout.LayoutParams sound = new FrameLayout.LayoutParams(55, 35);
    FrameLayout.LayoutParams nowshwingat = new FrameLayout.LayoutParams(200, 60);
    FrameLayout.LayoutParams movie_name = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 60);

    //Defining array for framelayout.

    ArrayList fHolder = new ArrayList();
    int l = 12;
    for (int i = 0; i<=l; i++) {
        //Dynamically frameslayout for video
        fHolder.add(frame);
        frame = new FrameLayout(this);
        FrameLayout.LayoutParams frameparams = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 350);
        frameparams.setMargins(0, 2, 0, 0);
        frame.setId(i + 1);
        frame.setMinimumHeight(350);
        ll.addView(frame);

        // Video over frames
        vv = new VideoView(this);
        vv.setId(i + 1);
        vv.setLayoutParams(frameparams);
        vv.setMinimumHeight(350);
        frame.addView(vv);

        //Pause btn over video
        Button pausebtn = new Button(this);
        pausebtn.setId(i + 1);
        pausebtn.setBackgroundResource(R.drawable.pause);
        pausebtn.setLayoutParams(playpausebtn);
        playpausebtn.gravity = Gravity.CENTER;
        frame.addView(pausebtn);

        //Play btn over video
        Button playbtn = new Button(this);
        playbtn.setLayoutParams(playpausebtn);
        playbtn.setId(i + 1);
        playbtn.setBackgroundResource(R.drawable.playy);
        playpausebtn.gravity = Gravity.CENTER;
        frame.addView(playbtn);


        //Sound btn over video
        Button soundbtn = new Button(this);
        soundbtn.setLayoutParams(sound);
        soundbtn.setId(i + 1);
        soundbtn.setBackgroundResource(R.drawable.sound);
        sound.setMargins(0, 15, 5, 0);
        sound.gravity = Gravity.RIGHT;
        frame.addView(soundbtn);

        //now showing at over video
        showingat = new TextView(this);
        showingat.setLayoutParams(nowshwingat);
        showingat.setText("Now showing at ");
        showingat.setTextSize(15);
        showingat.setTextColor(getResources().getColor(R.color.white));
        nowshwingat.setMargins(10, 0, 0, 0);
        nowshwingat.gravity = Gravity.LEFT | Gravity.BOTTOM;
        frame.addView(showingat);

        movie = new TextView(MainActivity.this);
        movie.setLayoutParams(movie_name);
        movie.setId(i+1);
        movie.setText(" ");
        movie.setTextSize(15);
        movie.setTextColor(getResources().getColor(R.color.white));
        movie_name.setMargins(10, 10, 0, 0);
        movie_name.gravity = Gravity.TOP | Gravity.LEFT;
        frame.addView(movie);


    }


}

private class Theaterflow extends AsyncTask<String, Void, String> {


    // URL to get contents JSON
    String url = "http://filfest.in/demo/theater/first-theater-data.php";
    JSONArray contents = null;

    protected void onPreExecute() {

        super.onPreExecute();
        pDialog = new ProgressDialog(MainActivity.this);
        pDialog.setMessage("Loading Data ...");
        pDialog.setIndeterminate(false);
        pDialog.setCancelable(false);
        pDialog.show();
    }

    @Override
    protected String doInBackground(String...urls){

        ArrayList arraylist = new ArrayList<HashMap<String, String>>();
        ServiceHandler sh = new ServiceHandler();
        // Making a request to url and getting response
        String jsonstr = sh.makeServiceCall(url, null);

        if (jsonstr != null) {
            try {

                JSONObject jObject1 = new JSONObject(jsonstr);
                contents = jObject1.optJSONArray("contents");
                for (int i = 0; i < contents.length(); i++) {

                    JSONObject c1 = contents.getJSONObject(i);
                    moviename = c1.getString("movie_name");
                    abc.add(moviename);
                }

            } catch (JSONException e) {
                e.printStackTrace();
            }
        }
        return  null;
    }
    public void onPostExecute(String result) {
        if (pDialog.isShowing())
            pDialog.dismiss();
        for (int i=0;i<abc.size();i++)
        {
            movie.setText(moviename);
        }

    }


}
公共类MainActivity扩展活动{
字符串moviename;
私人对话;
视频视图;
文本视图显示AT、电影;
框架布局框架;
ArrayList abc;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.navigationbar);
abc=新数组列表();
new Theaterflow().execute();
//主要相对布局。
最终RelativeLayout rl=(RelativeLayout)findViewById(R.id.MainRelativeLayout);
//主滚动视图。
最终ScrollView sv=(ScrollView)findViewById(R.id.ScrollView);
//主线布局。
最终线性布局ll=(线性布局)findViewById(R.id.LinearLayout1);
//动态创建布局。
FrameLayout.LayoutParams playpausebtn=新的FrameLayout.LayoutParams(70,70);
FrameLayout.LayoutParams声音=新的FrameLayout.LayoutParams(55,35);
FrameLayout.LayoutParams nowshwingat=新FrameLayout.LayoutParams(200,60);
FrameLayout.LayoutParams movie_name=新建FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_父级,60);
//为framelayout定义数组。
ArrayList fHolder=新的ArrayList();
int l=12;
for(int i=0;i在for循环中

movie = new TextView(MainActivity.this);      
movie.setTag(i);
在循环的
onPost()中

final int childCount = ll.getChildCount();

            for (int y = 0; y < childCount; y++) {
                final View child = ll.getChildAt(y);
                if (child instanceof FrameLayout) {
                    int childs = ((FrameLayout) child).getChildCount();
                    for (int j = 0; j < childs; j++) {
                        final View childViews = ((ViewGroup) child)
                                .getChildAt(j);
                        if (childViews instanceof TextView) {
                            final Object tagObj = childViews.getTag();
                            if (tagObj != null && tagObj.equals(i)) {
                                ((TextView) childViews).setText("Movie "
                                        + i);
                            }
                        }

                    }

                }

            }
final int childCount=ll.getChildCount();
对于(int y=0;y
线性布局中以编程方式添加视图

 <?xml version="1.0" encoding="utf-8"?>
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/llParent"
    android:orientation="vertical"
    android:layout_width="match_parent" 
    android:layout_height="match_parent">

 </LinearLayout>
LinearLayout llParent = (LinearLayout)findViewById(R.id.llParent);
 for (int i=0;i<Your_ArrayList.size(); i++){
    TextView txtView = new TextView(this);
    txtView.setText(Your_ArrayList.get(i).getMovieName());
    llParent.addView(txtView);
 }
layout.xml

 <?xml version="1.0" encoding="utf-8"?>
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/llParent"
    android:orientation="vertical"
    android:layout_width="match_parent" 
    android:layout_height="match_parent">

 </LinearLayout>
LinearLayout llParent = (LinearLayout)findViewById(R.id.llParent);
 for (int i=0;i<Your_ArrayList.size(); i++){
    TextView txtView = new TextView(this);
    txtView.setText(Your_ArrayList.get(i).getMovieName());
    llParent.addView(txtView);
 }
AsyncTask的onPostExecute()

 <?xml version="1.0" encoding="utf-8"?>
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/llParent"
    android:orientation="vertical"
    android:layout_width="match_parent" 
    android:layout_height="match_parent">

 </LinearLayout>
LinearLayout llParent = (LinearLayout)findViewById(R.id.llParent);
 for (int i=0;i<Your_ArrayList.size(); i++){
    TextView txtView = new TextView(this);
    txtView.setText(Your_ArrayList.get(i).getMovieName());
    llParent.addView(txtView);
 }

希望这能对你有所帮助。

因为你只有一部电影,而不是《我是如何制作的》this@nirajkumar您应该在给出提示的情况下自己解决这个问题。将标记添加到textView,然后在post执行调用框架上。getchildcount循环遍历它们,检查它们的标记,并根据标记填充它们。请给我一些代码这些代码都在里面:for(int i=0;Itis给我空屏幕你在ll容器上做了循环了吗?我尝试了代码,效果很好,你添加了标签了吗?@nirajkumar,我编辑了我的答案,请检查