我在activity_main.xml中有一个Textview设计,我想将其用于在另一个下面显示一个textview。我从stackoverlow本身获得了这段代码,并做了一些改动以使用现有的Textview设计。但是,该应用程序在打开时关闭,什么也不显示。我是Android开发的新手。
TextView的XML代码:
<TextView
android:id="@+id/textviews"
android:layout_width="match_parent"
android:layout_height="104dp"
android:textSize="30sp" />
这是我从Stackoverflow获得的代码:
String[] textArray = {"One", "Two", "Three", "Four"};
LinearLayout linearLayout = new LinearLayout(this);
setContentView(linearLayout);
linearLayout.setOrientation(LinearLayout.VERTICAL);
for( int i = 0; i < textArray.length; i++ )
{
TextView textView = new TextView(this);
textView.setText(textArray[i]);
linearLayout.addView(textView);
}
此代码可以完美运行,没有任何问题。但是,当我尝试使用findViewById调用现有的textview设计时,代码会生成,但该应用程序永远不会打开。在这里:
String[] textArray = {"One", "Two", "Three", "Four"};
LinearLayout linearLayout = new LinearLayout(this);
setContentView(linearLayout);
linearLayout.setOrientation(LinearLayout.VERTICAL);
for( int i = 0; i < textArray.length; i++ )
{
TextView textView =(TextView) findViewById(R.id.textviews);
textView.setText(textArray[i]);
linearLayout.addView(textView);
}
如何在此代码中使用现有的textview设计?
答案 0 :(得分:1)
解决方案:
您的代码仅有少许变化,请与下面的代码进行比较,然后尝试:
String[] textArray = {"One", "Two", "Three", "Four"};
LinearLayout linearLayout = new LinearLayout(this);
setContentView(linearLayout);
linearLayout.setOrientation(LinearLayout.VERTICAL);
for( int i = 0; i < textArray.length; i++ )
{
View v = (View) getLayoutInflater().inflate(R.layout.your_text_view_layout, null);
TextView textView = v.findViewById(R.id.textviews);
textView.setText(textArray[i]);
linearLayout.addView(textView);
}
希望它能起作用。
答案 1 :(得分:0)
您必须为TextView布局充气,请尝试以下代码,
textviews.xml
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/textviews"
android:layout_width="match_parent"
android:layout_height="104dp"
android:textSize="30sp" />
Java代码
String[] textArray = {"One", "Two", "Three", "Four"};
LinearLayout linearLayout = new LinearLayout(this);
setContentView(linearLayout);
linearLayout.setOrientation(LinearLayout.VERTICAL);
for( int i = 0; i < textArray.length; i++)
{
TextView textView = (TextView) getLayoutInflater().inflate(R.layout.textviews, null);
textView.setText(textArray[i]);
linearLayout.addView(textView);
}
答案 2 :(得分:0)
采用xml中的线性布局,
<LinearLayout
android:id="@+id/linear"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"/>
并在其中添加textview作为
LinearLayout linearLayout = (LinearLayout)findViewById(R.id.linear);
String[] textArray = {"One", "Two", "Three", "Four"};
for( int i = 0; i < textArray.length; i++ )
{
TextView textView = new TextView(this);
textView.setText(textArray[i]);
linearLayout.addView(textView);
}
答案 3 :(得分:0)
要在TextView下方找到TextView,必须使用ListView完成。 首先,您必须进行自定义适配器布局。
<LinearLayout
android:layout_width="match_parent"
android:layout_height="60dp"
android:background="#cede8a">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="20dp"
android:padding="10dp"
android:id="@+id/text"
android:textColor="#000000"
/>
</LinearLayout>
然后在要显示TextView的布局中创建一个列表视图。
<ListView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/listview"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
在主类中,您初始化ListView并将数据存储在数组或其他数据结构中。
public class MainActivity extends AppCompatActivity {
private ListView listView;
private ArrayList<String> al_data = new ArrayList<>();
private Adapter obj_adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView = findViewById(R.id.listview);
al_data.add("1234");
al_data.add("1257");
al_data.add("100");
al_data.add("1547");
obj_adapter = new Adapter(al_data);
LinearLayoutManager layoutManager = new LinearLayoutManager(getApplicationContext(),LinearLayoutManager.VERTICAL,false);
listView.setLayoutManager(layoutManager);
listView.setAdapter(obj_adapter);
}
}
现在在自定义适配器的类中编写以下代码。
public class Adapter extends ListView.Adapter<Adapter.MyViewHolder>{
private ArrayList<String> al_data;
public class MyViewHolder extends ListView.ViewHolder{
public TextView textview;
public MyViewHolder (View view){
super(view);
textview = view.findViewById(R.id.text);
}
}
public Adapter(ArrayList<String> al_data) {
this.al_data = al_data;
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.adapter_layout,parent,false);
return new MyViewHolder(view);
}
@Override
public void onBindViewHolder(final MyViewHolder holder, int position) {
holder.textview.setText(al_data.get(position));
}
@Override
public int getItemCount() {
return al_data.size();
}
}