我想创建一个动态创建的Text视图Clickable。我根据从Sqlite表中的数据中获取的结果创建了Text视图,然后将数据放入Text视图中。随着在表中插入更多记录,文本视图的数量会增加。鉴于贝娄是它的代码。
ClassInfo[] info = db.getClassesDetail();
String s = info[0].getClassName()+" "+ info[0].getSectionName();
将数组传递给其他类中的方法。 setFrontLayout(INFO);
根据表中的记录或数组中的数据创建动态文本视图的方法。
private void setFrontLayout(ClassInfo[] info)
{
int u = info.length;
int count = 0;
int tvid=1;
while(count < u )
{
String str = "Class : " + info[count].getClassName() +" " + "Semester : " + info[count].getSemester()
+ "\n" + "Section : " + info[count].getSectionName() + " " + "Programm : " + info[count].getProgName()
+ "\n" + "Department : " + info[count].getDeptName();
subLayout = new LinearLayout(getApplicationContext());
subLayout.setOrientation(LinearLayout.VERTICAL);
subLayout.setPadding(5, 10,5,20);
tv = new TextView(this);
tv.setText(str);
tv.setWidth(400);
tv.setTextColor(Color.CYAN);
tv.setPadding(17,3, 15,3);
subLayout.setBackgroundColor(Color.LTGRAY);
subLayout.addView(tv);
parentLayout.addView(subLayout);
count++;
}
现在我想要的是将clicklistener附加到这些创建的Text视图,方法是将其点击以指向新活动。我不知道该怎么做。
答案 0 :(得分:0)
Eclipse没有运行,所以我无法检查,但设置一个on click监听器应该可以工作。
tv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//Code here
}
});
答案 1 :(得分:0)
您应该使用数组适配器。 我们的想法是,为每个条目绘制文本视图。 然后注册一个onclick监听器并发送和意图使用类信息(所以...确保它实现了Parcelable或Serializable)。 创建一个活动,该活动呈现该信息并在清单中注册意图。
public class ClassInfoArrayListAdapter extends ArrayAdapter<ClassInfo> {
public ClassInfoArrayListAdapter (Context context, int resource, List<ClassInfo> objects) {
super(context, resource, objects);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
final View rowView = inflater.inflate(R.layout.your_layout, parent, false);
ClassInfo classInfo = getItem(position);
TextView classTextVIew = (TextView) rowView.findViewById(R.id.className);
classTextVIew.setText(classInfo.getUuid().toString());
classTextVIew.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent= new Intent();
intent.setAction("your.package.SHOW_CLASS_INFO");
intent.putExtra("classInfo", classInfo);
parent.getContext().startActivity(intent);
}
});
return rowView;
}
}