Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何获取TableLayout中TableRow所在的索引?_Java_Android_Layout Inflater - Fatal编程技术网

Java 如何获取TableLayout中TableRow所在的索引?

Java 如何获取TableLayout中TableRow所在的索引?,java,android,layout-inflater,Java,Android,Layout Inflater,所以我现在正在创建一个小提醒应用程序,你创建你的提醒,它将一个表格行添加到一个表格布局中,这是一个滚动视图的子项。一切都很基本 我想做的是,当我使用LayoutInflater将TableRow添加到TableLayout时,如何在该TableRow上设置标记,以及如何在以后的代码中获取存储在该TableLayout中的信息 当前代码: public class MainActivity extends ActionBarActivity { private TableLayout r

所以我现在正在创建一个小提醒应用程序,你创建你的提醒,它将一个表格行添加到一个表格布局中,这是一个滚动视图的子项。一切都很基本

我想做的是,当我使用
LayoutInflater
将TableRow添加到TableLayout时,如何在该TableRow上设置标记,以及如何在以后的代码中获取存储在该TableLayout中的信息

当前代码:

public class MainActivity extends ActionBarActivity {

    private TableLayout reminderTableScrollView;

    Button deleteReminderButton;

    Toast remindersToast;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        reminderTableScrollView = (TableLayout) findViewById(R.id.reminderTableScrollView);

        deleteReminderButton = (Button) findViewById(R.id.deleteButton);
        deleteReminderButton.setOnClickListener(deleteClickListener);
    }

    private void goToEnterData() {
        Intent intent = new Intent(this, ReminderData.class);
        startActivityForResult(intent, 1);
    }

    protected void onActivityResult(int requestCode, int resultCode, Intent returnIntent) {

        if (requestCode == 1) {
            if(resultCode == RESULT_OK){
                String title = returnIntent.getStringExtra("title");
                String description = returnIntent.getStringExtra("description");
                String hour = returnIntent.getStringExtra("hour");
                String minute = returnIntent.getStringExtra("minute");
                String amPm = returnIntent.getStringExtra("amPm");

                Log.d("Debug", String.valueOf(list));
                Log.d("Debug", hour + ":" + minute);

                inflate(title, description, hour, minute, amPm);
            }
            if (resultCode == RESULT_CANCELED) {
                displayToast(new Toast(this), "Reminder canceled");
            }
        }
    }

    private void inflate(String text, String description, String hour, String minute, String amPm) {
        LayoutInflater inflator = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);

        View reminder = inflator.inflate(R.layout.reminder_layout, null);

        TextView reminderListTextView = (TextView) reminder.findViewById(R.id.reminderListTextView);
        reminderListTextView.setText(text);

        TextView reminderListTimeTextView = (TextView) reminder.findViewById(R.id.timeTextView);
        reminderListTimeTextView.setText(hour + ":" + minute + ((amPm == "0") ? " AM" : " PM"));

        reminderTableScrollView.addView(reminder);

        Log.d("Debug", String.valueOf(reminderTableScrollView.getTag(0)));
    }
提醒数据.java

public class ReminderData extends ActionBarActivity implements OnClickListener {

    EditText titleEditText;
    EditText descriptionEditText;
    EditText hourTimeEditText;
    EditText minuteTimeEditText;

    Spinner spinner;

    Button enterButton;

    Toast toast;

    SQLiteDatabase myDB;

    String title;
    String description;

    int spinnerPosition;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_reminder_data);

        titleEditText = (EditText) findViewById(R.id.titleEditText);
        descriptionEditText = (EditText) findViewById(R.id.descriptionEditText); 

        hourTimeEditText = (EditText) findViewById(R.id.hourTimeEditText);
        minuteTimeEditText = (EditText) findViewById(R.id.minuteTimeEditText);

        spinner = (Spinner) findViewById(R.id.ampm_spinner);
        spinner.setOnItemSelectedListener(spinnerItemSelectedListener);

        enterButton = (Button) findViewById(R.id.enterButton);
        enterButton.setOnClickListener(this);
    }

    private OnItemSelectedListener spinnerItemSelectedListener = new OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parent, View view,
                int position, long id) {
            spinnerPosition = position;
        }

        @Override
        public void onNothingSelected(AdapterView<?> parent) {

        }
    };

    private void returnData(String titleString, String descriptionString, String hour, String minute, String amPm) {
        Intent returnIntent = new Intent();
        returnIntent.putExtra("title", titleString);
        returnIntent.putExtra("description", descriptionString);
        returnIntent.putExtra("hour", hour);
        returnIntent.putExtra("minute", minute);
        returnIntent.putExtra("amPm", amPm);

        setResult(RESULT_OK, returnIntent);
        finish();
    }
公共类提醒数据扩展ActionBarActivity实现OnClickListener{
编辑文本标题编辑文本;
编辑文本描述编辑文本;
EditText hourTimeEditText;
编辑文本分钟编辑文本;
纺纱机;
按钮输入按钮;
吐司;
sqlitemydb数据库;
字符串标题;
字符串描述;
内喷丝头位置;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u提醒\u数据);
titleEditText=(EditText)findViewById(R.id.titleEditText);
descriptionEditText=(EditText)findViewById(R.id.descriptionEditText);
hourTimeEditText=(EditText)findViewById(R.id.hourTimeEditText);
minuteTimeEditText=(EditText)findViewById(R.id.minuteTimeEditText);
微调器=(微调器)findViewById(R.id.ampm_微调器);
spinner.setOnItemSelectedListener(spinnerItemSelectedListener);
enterButton=(按钮)findViewById(R.id.enterButton);
enterButton.setOnClickListener(此);
}
私有OnItemSelectedListener微调器ItemSelectedListener=新建OnItemSelectedListener(){
@凌驾
已选择公共视图(AdapterView父视图、视图、,
内部位置,长id){
喷丝头位置=位置;
}
@凌驾
未选择公共无效(AdapterView父级){
}
};
私有void returnData(字符串标题字符串、字符串描述字符串、字符串小时、字符串分钟、字符串amPm){
Intent returnIntent=新Intent();
returnIntent.putExtra(“标题”,标题串);
returnIntent.putExtra(“描述”,descriptionString);
returnIntent.putExtra(“小时”,小时);
returnIntent.putExtra(“分钟”,分钟);
returnIntent.putExtra(“amPm”,amPm);
setResult(结果正常,返回意图);
完成();
}
很抱歉代码太多,通常我会尽量简短,人们会要求更多的代码

编辑:我删除了不必要的编码

我想做的是在将TableRow添加到TableLayout时使用 LayoutFlater,我该如何在那张桌子上设置标签,我该如何设置 在我的代码中获取存储在该表布局中的信息

您可以将TableRow的索引设置为它的标记。在充气(字符串文本、字符串描述、字符串小时、字符串分钟、字符串amPm)方法中执行以下操作:

然后按如下方式检索索引:

int index = (Integer)reminder.getTag();
    int index = reminderTableScrollView.getChildCount();
    reminder.setTag(index);
    reminder.setOnClickListener(new OnClickListener(){
        public void onClick(View v){
            // The View you get here is actually the reminder
            int index = (Integer)reminder.getTag();
            // Now you have the index, you can do what you want.
        }
    });
    reminderTableScrollView.addView(reminder);
更新:

根据您的评论,可以通过如下方式为每个TableRow设置OnClickListener来实现您的目的:

int index = (Integer)reminder.getTag();
    int index = reminderTableScrollView.getChildCount();
    reminder.setTag(index);
    reminder.setOnClickListener(new OnClickListener(){
        public void onClick(View v){
            // The View you get here is actually the reminder
            int index = (Integer)reminder.getTag();
            // Now you have the index, you can do what you want.
        }
    });
    reminderTableScrollView.addView(reminder);

很抱歉,你能展示相关的代码吗?我知道人们想看代码,但他们想看与问题相关的代码(不是所有的调试和导入代码)。看。这是人们真正想看的,不是很多代码(我意识到有时很难知道有多少代码是正确的)@Nateowami嗯,很抱歉,我在想,因为我的代码有大量引用代码的其他部分,我应该添加所有代码。而且,因为我认为我必须重新编写大部分代码。你能将这些索引添加到数组中吗?一个我可以在我的代码中获取所有索引的数组吗?@YayCoding这毫无意义,你想做什么如何处理这些索引?为什么要将它们放在一个数组中?我希望用户能够单击它们并查看有关它们的更多信息,我需要使用一个数组并将onClickListener添加到每个索引中。然后从设置的标记中获取信息。希望这让senseThank非常感谢您,最后一件事,有了标记集和所有内容,这一切都完成了如何从TableRow获取TextView等,对吗?@YayCoding从TableRow获取TextView实际上不需要该标记。由于您的onClick()方法中有提醒,您可以使用提醒。findViewById()获取TextView,就像您现在在代码中所做的一样。