制作动态创建的任务视图可点击

时间:2014-07-18 21:48:26

标签: android android-activity textview

我想创建一个动态创建的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视图,方法是将其点击以指向新活动。我不知道该怎么做。

2 个答案:

答案 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;
}

}