Android 如何在每个表格行上单击Textview
我正在做管理页面。作为管理员,他必须能够编辑表中每一行的数据。但当我点击编辑时,它无法进入新的活动。我不确定出了什么问题。下面是我的桌面图片 下面是我的java编码,我删掉了一些不重要的编码:Android 如何在每个表格行上单击Textview,android,Android,我正在做管理页面。作为管理员,他必须能够编辑表中每一行的数据。但当我点击编辑时,它无法进入新的活动。我不确定出了什么问题。下面是我的桌面图片 下面是我的java编码,我删掉了一些不重要的编码: public class assessment_table_edit extends AppCompatActivity implements View.OnClickListener{ String data = ""; TableLayout tlAssessment; Ta
public class assessment_table_edit extends AppCompatActivity implements View.OnClickListener{
String data = "";
TableLayout tlAssessment;
TableRow tr;
TextView stuID,totalmarks,marks,edit;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_assessment_table_edit);
tlAssessment=(TableLayout)findViewById(R.id.tlAssessment_Edit);
edit=(TextView)findViewById(R.id.assessment_edit);
final Assessment_Information_GetData getdb=new Assessment_Information_GetData();
new Thread(new Runnable() {
@Override
public void run() {
data =getdb.getDataFromDB();
System.out.println(data);
runOnUiThread(new Runnable() {
@Override
public void run() {
ArrayList<Assessment_Information> users=parseJSON(data);
addData(users);
}
});
}
}).start();
if(getSupportActionBar()!=null){
getSupportActionBar().setDisplayShowHomeEnabled(true);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
}
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.assessment_edit:
Intent iChange=new Intent(assessment_table_edit.this,edit_details.class);
startActivity(iChangePassword);
break;
}
}
@SuppressWarnings("deprecation")
void addHeader(){
edit=new TextView(this);
edit.setText("Modify");
edit.setGravity(Gravity.CENTER);
edit.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, TableRow.LayoutParams.WRAP_CONTENT));
edit.setPadding(2,2,2,2);
edit.setTextColor(Color.parseColor("#FFFFFF"));
edit.setBackgroundColor(Color.parseColor("#607D8B"));
Ll=new LinearLayout(this);
params = new LinearLayout.LayoutParams(TableRow.LayoutParams.FILL_PARENT,
TableRow.LayoutParams.WRAP_CONTENT);
params.setMargins(2,2,2,2);
Ll.addView(edit,params);
tr.addView((View)Ll);
tlAssessment.addView(tr,
new TableLayout.LayoutParams(TableRow.LayoutParams.FILL_PARENT, TableRow.LayoutParams.WRAP_CONTENT));
}
@SuppressWarnings({ "rawtypes", "deprecation" })
public void addData(ArrayList<Assessment_Information>users){
addHeader();
for (Iterator i = users.iterator(); i.hasNext();) {
Assessment_Information p=(Assessment_Information)i.next();
tr=new TableRow(this);
//Edit here
edit=new TextView(this);
edit.setText("Edit");
edit.setOnClickListener(this);
edit.setGravity(Gravity.CENTER);
edit.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, TableRow.LayoutParams.WRAP_CONTENT));
edit.setPadding(2, 2, 2, 2);
edit.setTextColor(Color.parseColor("#3F51B5"));
edit.setBackgroundColor(Color.parseColor("#90CAF9"));
Ll = new LinearLayout(this);
params = new LinearLayout.LayoutParams(TableRow.LayoutParams.FILL_PARENT,
TableRow.LayoutParams.WRAP_CONTENT);
params.setMargins(2, 2, 2, 2);
Ll.addView(edit,params);
tr.addView((View) Ll);
tlAssessment.addView(tr,
new TableLayout.LayoutParams(TableRow.LayoutParams.FILL_PARENT, TableRow.LayoutParams.WRAP_CONTENT));
}
}
public class assessment\u table\u edit扩展AppCompatActivity实现View.OnClickListener{
字符串数据=”;
表格布局评估;
TableRow tr;
文本视图stuID、totalmarks、marks、edit;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u assessment\u table\u edit);
tAssessment=(TableLayout)findViewById(R.id.tAssessment_Edit);
编辑=(TextView)findViewById(R.id.assessment\u edit);
最终评估_信息_GetData getdb=新评估_信息_GetData();
新线程(newrunnable()){
@凌驾
公开募捐{
data=getdb.getDataFromDB();
系统输出打印项次(数据);
runOnUiThread(新的Runnable(){
@凌驾
公开募捐{
ArrayList users=parseJSON(数据);
添加数据(用户);
}
});
}
}).start();
如果(getSupportActionBar()!=null){
getSupportActionBar().setDisplayShowHomeEnabled(true);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
}
@凌驾
公共void onClick(视图v){
开关(v.getId()){
案例R.id.assessment\u编辑:
Intent iChange=新的意图(评估表编辑,编辑详情类);
startActivity(iChangePassword);
打破
}
}
@抑制警告(“弃用”)
void addHeader(){
编辑=新文本视图(此);
edit.setText(“修改”);
编辑.设置重力(重力.中心);
edit.setLayoutParams(新的TableRow.LayoutParams(TableRow.LayoutParams.WRAP_内容,TableRow.LayoutParams.WRAP_内容));
编辑.setPadding(2,2,2,2);
edit.setTextColor(Color.parseColor(#FFFFFF”);
编辑.setBackgroundColor(Color.parseColor(#607D8B));
Ll=新的线性布局(本);
params=新的LinearLayout.LayoutParams(TableRow.LayoutParams.FILL\u父项,
TableRow.LayoutParams.WRAP_内容);
参数设置边距(2,2,2,2);
Ll.addView(编辑,参数);
tr.addView((视图)Ll);
t评估.添加视图(tr,
新建TableLayout.LayoutParams(TableRow.LayoutParams.FILL_父级,TableRow.LayoutParams.WRAP_内容));
}
@SuppressWarnings({“rawtypes”,“deprecation”})
公共无效添加数据(ArrayListusers){
addHeader();
for(迭代器i=users.Iterator();i.hasNext();){
评估信息p=(评估信息)i.下一步();
tr=新表格行(本);
//编辑这里
编辑=新文本视图(此);
edit.setText(“编辑”);
edit.setOnClickListener(这个);
编辑.设置重力(重力.中心);
edit.setLayoutParams(新的TableRow.LayoutParams(TableRow.LayoutParams.WRAP_内容,TableRow.LayoutParams.WRAP_内容));
编辑.setPadding(2,2,2,2);
edit.setTextColor(Color.parseColor(#3F51B5”);
edit.setBackgroundColor(Color.parseColor(#90CAF9”);
Ll=新的线性布局(本);
params=新的LinearLayout.LayoutParams(TableRow.LayoutParams.FILL\u父项,
TableRow.LayoutParams.WRAP_内容);
参数设置边距(2,2,2,2);
Ll.addView(编辑,参数);
tr.addView((视图)Ll);
t评估.添加视图(tr,
新建TableLayout.LayoutParams(TableRow.LayoutParams.FILL_父级,TableRow.LayoutParams.WRAP_内容));
}
}
下面是我的xml编码:
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true" >
<TableLayout
android:id="@+id/tlAssessment_Edit"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:stretchColumns="*" >
</TableLayout>
</ScrollView>
<TextView
android:id="@+id/assessment_edit"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:visibility="gone" />
动态生成
文本视图时:
首先创建单独的OnClickListener
方法
OnClickListener onclicklistener = new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()){
case R.id.my_custom_id:
Intent iChange=new Intent(assessment_table_edit.this,edit_details.class);
startActivity(iChange);
break;
}
}
};
现在在values/strings.xml中定义自定义id:
<item name="my_custom_id" type="id" />
它显示错误:由以下原因引起:java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“void android.widget.TextView.setId(int)”。您必须在“edit=new TextView(this)”…初始化TextView之后设置id
edit.setId(R.id.my_custom_id);
edit.setOnClickListener(onclicklistener);