所以我有一个主要活动:
public class MainActivity extends AppCompatActivity {
static DBhelper myDB;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myDB=new DBhelper(this);
//myDB.access_token(93588930);
}
@Override
public void onResume() {
super.onResume();
LinearLayout ll= (LinearLayout) findViewById(R.id.char_layout);
if(( ll).getChildCount() > 0)
( ll).removeAllViews();
JSONArray chars=myDB.get_all_chars();
TextView[] tv= new TextView[chars.length()];
for (int i = 0; i < chars.length(); i++) {
try {
tv[i] = new TextView(this);
JSONObject c = (JSONObject) chars.get(i);
tv[i].setText(c.getString("name")+"\n"+c.getString("id"));
ll.addView(tv[i]);
} catch (JSONException e) {
e.printStackTrace();
}
}
}
}
使用以下xml:
<?xml version="1.0" encoding="utf-8"?>
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
tools:context="com.jbs.evecompanion.MainActivity"
android:columnCount = "1">
<LinearLayout
android:orientation="vertical"
android:id="@+id/char_layout"
android:clickable="true"
android:onClick="stufftocall"/>
</GridLayout>
我希望能够在每一行上调用一个函数 现在,你可以看到我为布局设置了“clickable”和“onclick”。但是这会调用相同的函数,现在我点击哪一行,对吧? 我想要的是单击每一行并使用不同的参数调用相同的函数,具体取决于此行中设置的文本。
答案 0 :(得分:0)
请勿在{{1}}
中设置android:onClick="stufftocall"
将其设置在您的java文件中,如下面的
假设tv [i]是你的行。
layout.xml
答案 1 :(得分:0)
您可以使用setTag()
和getTag()
方法。
创建一个侦听器:
mListener = new OnClickListener() {
@Override
public void onClick(View v) {
Log.d(TAG,"Clicked on "+v.getTag());
}
};
为所有textViews分配一个标签,并将此监听器添加到每个标签:
tv[i].setTag(i);
tv[i].setOnClickListener(mListener);