我遇到了一些我从一本书改编的BaseAdapter代码的问题.我一直在我的应用程序中使用此代码的变体,但只是在滚动一个长列表时才实现ListView中的项目变得混乱而不是所有元素都显示出来.
描述确切的行为非常困难,但很容易看出你是否采用了50个项目的排序列表并开始上下滚动.
class ContactAdapter extends BaseAdapter {
ArrayList<Contact> mContacts;
public ContactAdapter(ArrayList<Contact> contacts) {
mContacts = contacts;
}
@Override
public int getCount() {
return mContacts.size();
}
@Override
public Object getItem(int position) {
return mContacts.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view;
if(convertView == null){
LayoutInflater li = getLayoutInflater();
view = li.inflate(R.layout.groups_item, null);
TextView label = (TextView)view.findViewById(R.id.groups_item_title);
label.setText(mContacts.get(position).getName());
label = (TextView)view.findViewById(R.id.groups_item_subtitle);
label.setText(mContacts.get(position).getNumber());
}
else
{
view = …Run Code Online (Sandbox Code Playgroud) 我有一个我没有root访问权限的系统,但我需要安装当前版本的GCC(4.7.2).
系统正在运行Linux 2.6.18的x86_64版本,并且已经有GCC 4.1(即使--version表示它是用它构建的,也没有C++支持).
编辑5:此时,以下步骤只是我尝试过的一组事情.从那时起我已经开始清洁了几次.我正在寻找有人详细说明我需要使用所有开关所需的确切顺序.
这是我到目前为止所经历的过程(ROOT是我主目录中的文件夹)
make-3.82>./configure --prefix=$ROOT && make && make install && hash -r
binutils-2.23>./configure --prefix=$ROOT && make && make install
autoconf-2.69>./configure --prefix=$ROOT && make && make install
automake-1.9>./configure --prefix=$ROOT && make && make install
flex-2.5.37>./configure --prefix=$ROOT && make && make install
libunwind-1.1>./configure --prefix=$ROOT && make && make install
gcc-4.7.2-scratch>../gcc-4.7.2/configure --prefix=$ROOT \
--disable-multilib --disable-nls --enable-languages=c,c++ \
&& make && make install && hash -r
ncurses-5.9>./configure --prefix=$ROOT && make && make install
texinfo-4.13>./configure --prefix=$ROOT && make && make install …Run Code Online (Sandbox Code Playgroud) 我试图理解如何编写正确的Rust代码,但我想我可能高估了编译器理解对象生命周期的能力.这是我期望它工作的代码:
use std::path::Path;
use std::env;
use rusqlite::SqliteConnection;
struct SomeDatabase {
conn: SqliteConnection,
}
impl SomeDatabase {
fn getPath() -> &Path {
let path = env::home_dir().unwrap();
path.push("foo.sqlite3");
path.as_path()
}
fn open() -> SomeDatabase {
let path = SomeDatabase::getPath()
SomeDatabase { conn: SqliteConnection::open(path).unwrap() }
}
}
fn main() {
let db = SomeDatabase::open();
}
Run Code Online (Sandbox Code Playgroud)
当我尝试编译它时,我得到一个关于缺少生命周期说明符的错误&Path.我知道如果这从调用者那里获取了一个引用参数,它将与该引用具有相同的生命周期.虽然我期待的是生命周期将附加到我将结果赋给的变量.
我知道生命周期可以明确添加,但在这种情况下我不知道如何应用它们.编译器建议尝试'static生命周期,但据我所知,这没有意义,因为此函数的返回值的来源不是静态的.
现在,只是为了尝试看看会发生什么,如果我试图编译代码的其余部分,我从改变返回类型&Path来PathBuf,并呼吁as_path()在open().这导致编译器输出这些错误:
src\main.rs:22:30: 22:52 error: the trait `core::marker::Sized` is not implemented for the type `[u8]` …Run Code Online (Sandbox Code Playgroud) 可能重复:
如何指定指向重载函数的指针?
我有一个库,其类定义为:
struct ClassA
{
static ClassA foo(long);
static ClassA foo(double);
}
Run Code Online (Sandbox Code Playgroud)
我需要获取这两个函数的地址.我正在尝试的代码给出错误C2440:无法从'overloaded-function'转换为'...'
ns::ClassA (ns::ClassA::*ClassA_foo1)(long) = &ns::ClassA::foo;
ns::ClassA (ns::ClassA::*ClassA_foo2)(double) = &ns::ClassA::foo;
Run Code Online (Sandbox Code Playgroud)
我认为它们可能是静态的,但在返回类型之前或之后放置静态会产生相同的错误.
我有一个Android应用程序,包含一套应用程序.我希望每个应用程序都使用自己的启动器图标进行安装,因此我有一些具有相同intent过滤器的活动.
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
Run Code Online (Sandbox Code Playgroud)
如果我使用后退按钮关闭应用程序,它可以正常工作.每个启动器图标都会启动不同的活动.但是,如果我只是使用主页按钮将应用程序发送到后台,然后尝试启动另一个活动,那么我放入后台的活动将被带到前台而不是正确的活动开始.
我可以使多个图标工作,还是需要创建一个中心活动作为启动所有子应用程序的方法?
我正试图找出使用Task和并行化HTTP请求的正确方法async/await.我正在使用HttpClient已经具有异步方法来检索数据的类.如果我只是在foreach循环中调用它并等待响应,则一次只发送一个请求(这是有道理的,因为在await控制期间,控制返回到我们的事件循环,而不是foreach循环的下一次迭代).
我的包装HttpClient看起来像这样
public sealed class RestClient
{
private readonly HttpClient client;
public RestClient(string baseUrl)
{
var baseUri = new Uri(baseUrl);
client = new HttpClient
{
BaseAddress = baseUri
};
}
public async Task<Stream> GetResponseStreamAsync(string uri)
{
var resp = await GetResponseAsync(uri);
return await resp.Content.ReadAsStreamAsync();
}
public async Task<HttpResponseMessage> GetResponseAsync(string uri)
{
var resp = await client.GetAsync(uri);
if (!resp.IsSuccessStatusCode)
{
// ...
}
return resp;
}
public async Task<T> GetResponseObjectAsync<T>(string uri) …Run Code Online (Sandbox Code Playgroud) 我正在构建一个需要访问Web服务的Android应用程序(作为Eclipse项目).我们将从服务中将数据作为JSON序列化类发送,因此我们希望在Android应用程序和服务器应用程序之间共享一些类.我们目前认为我们需要这样做的方式是使用3个文件夹构建我们的Git存储库.一个用于客户端,一个用于服务器,一个用于共享库.
但在那时我们无法弄清楚如何创建共享代码.看起来我们可以将所有.java文件放入一个文件夹中,然后从其他项目创建一个指向该文件夹的相对链接,但这是一个很好的方法吗?
我们发现的另一种可能性是在Eclipse中创建另一个项目,然后在客户端项目中包含库项目.但是我们遇到了一个问题.我们如何使服务器和Android都可以使用该库?如果我在Eclipse中创建一个新的Java项目,我必须选择一个JRE来构建,但是Dalvik不是一个选项,即使它是如何使用桌面VM的库,如果库是为Dalvik编译的?
我有一个简单的ActiveRecord对象,表示估计的到达时间.
class Eta < ActiveRecord::Base
belongs_to :stop
belongs_to :vehicle
validates :timestamp, :presence => true
end
Run Code Online (Sandbox Code Playgroud)
在我的数据库,我创建了相应的栏目stop_id,vehicle_id和timestamp (of type datetime).
我有一个rake任务设置来执行此表上的操作,但它生成的SQL没有意义.如果我尝试运行:
for eta in Eta.all
puts eta.timestamp
end
Run Code Online (Sandbox Code Playgroud)
它尝试SELECT * FROM eta,但表是命名etas,而不是eta.
复数数据库命名与从ActiveRecord对象创建的其余表一致,我成功创建了一个正常工作的类似ActiveRecord对象.
class PrecedingCoord < ActiveRecord::Base
belongs_to :stop
belongs_to :route
belongs_to :coord
end
Run Code Online (Sandbox Code Playgroud)
在rake文件中:
for eta in PrecedingCoord.all
puts eta.coord.latitude
end
Run Code Online (Sandbox Code Playgroud)